antp Super Administrateur Champion des excuses bidons | Bon c'est un peu bordélique, c'est pris d'un de mes programmes...
Taille: Code :
- var
- taille: integer;
- f: file of byte;
- begin
- AssignFile(f, 'c:\fichier.avi');
- FileMode := 0; // le reset qui suit ouvrira le fichier en read only
- Reset(f);
- taille := (filesize(f) div 1024) div 1024;
- closefile(f);
|
Résolution: Code :
- const AVIH = $68697661; // la chaîne "AVIH" en hexa codée dans un DWORD...
- type
- TAVIHeader = record
- dwMicroSecPerFrame: DWORD;
- dwMaxBytesPerSec: DWORD;
- dwReserved1: DWORD;
- dwFlags: DWORD;
- dwTotalFrames: DWORD;
- dwInitialFrames: DWORD;
- dwStreams: DWORD;
- dwSuggestedBufferSize: DWORD;
- dwWidth: DWORD;
- dwHeight: DWORD;
- dwScale: DWORD;
- dwRate: DWORD;
- dwStart: DWORD;
- dwLength: DWORD;
- end;
- var
- VideoFile: TFileStream;
- Header: TAVIHeader;
- Block: DWORD;
- total, nread: longint;
- resolution := string;
- begin
- VideoFile := TFileStream.Create(FileList.FileName,fmOpenRead);
- VideoFile.Seek(0,soFrombeginning);
- total := 0;
- repeat
- nread := VideoFile.Read(Block,sizeof(Block));
- inc (total,nread);
- until (Block = AVIH) or (total > 1024) or (nread <= 0);
- if (total <= 1024) and (nread > 0) then
- begin
- VideoFile.Seek(sizeof(DWORD),soFromCurrent);
- VideoFile.Read(Header,sizeof(Header));
- resolution := Format('%dx%d', [Header.dwwidth, Header.dwheight]);
- end;
- VideoFile.Free;
- end;
|
je suppose qu'en effectuant un calcul avec les autres champs de la structure TAVIHeader il y a moyen de trouver la durée et le bitrate. [edtdd]--Message édité par antp--[/edtdd] ---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
|