Der ligger altid noget information om den pågældende fil gemt i en header; mener faktisk at der hyppigt ligger 2 slags, en til operativsystemets "Egenskaber" og en til de programmer der læser. Det er den sidste der er interessant idet her står dimensionerne og bit-dybde (farvedybde) og sikkert også hvilken version af filformatet der er tale om. Se bare Microsofts information om Bitmap:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_7ltf.asp.Tilsvarende er der sikkert headers for avi, mpeg og wmv.
avi:
http://www.fastgraph.com/help/avi_header_format.html - en 56-byte header der starter 32 bytes inde i filen. Her et eksempel (ikke testet, kun tampet ned hurtigt)?
type
TAVIHeader = packed record
TimeDelay : cardinal;
DataRate : cardinal;
PaddingSize : cardinal;
ParameterFlags: cardinal;
NumberOfFrames : cardinal;
NumberofPreviewFrames : cardinal;
NumberOfDataStreams : cardinal;
SuggestedPlaybackBufferSize : cardinal; // in bytes
PixelWidth : cardinal;
PixelHeight : cardinal;
TileScale : cardinal; // Typically 30
DataRate : cardinal; // (frame rate = data rate / time scale)
StartingTime : cardinal; // typically 0
AVISizeInTimeScaleUnits : cardinal;
end;
procedure ReadAVIHeader(aStream : TStream; var aAVIHeader : TAVIHeader);
begin
aStream.Position := 32;
aStream.ReadBuffer(aAVIHeader,sizeof(TAVIHeader));
end;
Måske kan du i stedet hente oplysningerne fra din afspiller? Det kræver at den loader filen hver gang og det kan være for langsomt.