[Delphi] Fichiers Avi

Fichiers Avi [Delphi] - Programmation

Marsh Posté le 13-09-2001 à 17:46:56    

Voila,
j'aimerai connaitre les fonctions et leurs constructions de l'api qui me permettent d'analyser les Fichiers Video Avi. (Taille, durée, biterate, et résolution).
J'ai trouvé dans l'SDK de Windows la fonction AviFileInfo. Malheureusement, mon pauvre niveau d'anglais ne m'aide pas à comprendre l'SDK. En fait, je trouve que l'SDK de windows est un vrai fouilli incompréhensible.
Alors si pouvez m'aidez, n'hésitez pas.


---------------
AraGorN Fils D'AraTHorN
Reply

Marsh Posté le 13-09-2001 à 17:46:56   

Reply

Marsh Posté le 13-09-2001 à 20:31:31    

-ThOR- AraGorN a écrit a écrit :

Voila,
j'aimerai connaitre les fonctions et leurs constructions de l'api qui me permettent d'analyser les Fichiers Video Avi. (Taille, durée, biterate, et résolution).
J'ai trouvé dans l'SDK de Windows la fonction AviFileInfo. Malheureusement, mon pauvre niveau d'anglais ne m'aide pas à comprendre l'SDK. En fait, je trouve que l'SDK de windows est un vrai fouilli incompréhensible.
Alors si pouvez m'aidez, n'hésitez pas.  




 
je sais pas mais essaye d'installer le composant Activex Windows Media Player (menu Composants->installer un activeX->WMP en bas de la liste). Avec un peu de chance, ce composant dispose de propriétés qui te donneront ces infos :)

Reply

Marsh Posté le 13-09-2001 à 21:13:55    

Bon c'est un peu bordélique, c'est pris d'un de mes programmes...
 
Taille:

Code :
  1. var
  2.   taille: integer;
  3.   f: file of byte;
  4. begin
  5.   AssignFile(f, 'c:\fichier.avi');
  6.   FileMode := 0; // le reset qui suit ouvrira le fichier en read only
  7.   Reset(f);
  8.   taille := (filesize(f) div 1024) div 1024;
  9.   closefile(f);


 
Résolution:

Code :
  1. const AVIH = $68697661; // la chaîne "AVIH" en hexa codée dans un DWORD...
  2. type
  3.   TAVIHeader = record
  4.     dwMicroSecPerFrame: DWORD;
  5.     dwMaxBytesPerSec: DWORD;
  6.     dwReserved1: DWORD;
  7.     dwFlags: DWORD;
  8.     dwTotalFrames: DWORD;
  9.     dwInitialFrames: DWORD;
  10.     dwStreams: DWORD;
  11.     dwSuggestedBufferSize: DWORD;
  12.     dwWidth: DWORD;
  13.     dwHeight: DWORD;
  14.     dwScale: DWORD;
  15.     dwRate: DWORD;
  16.     dwStart: DWORD;
  17.     dwLength: DWORD;
  18.   end;
  19. var
  20.   VideoFile: TFileStream;
  21.   Header: TAVIHeader;
  22.   Block: DWORD;
  23.   total, nread: longint;
  24.   resolution := string;
  25. begin
  26.    VideoFile := TFileStream.Create(FileList.FileName,fmOpenRead);
  27.    VideoFile.Seek(0,soFrombeginning);
  28.    total := 0;
  29.    repeat
  30.      nread := VideoFile.Read(Block,sizeof(Block));
  31.      inc (total,nread);
  32.    until (Block = AVIH) or (total > 1024) or (nread <= 0);
  33.    if (total <= 1024) and (nread > 0) then
  34.    begin
  35.      VideoFile.Seek(sizeof(DWORD),soFromCurrent);
  36.      VideoFile.Read(Header,sizeof(Header));
  37.      resolution := Format('%dx%d', [Header.dwwidth, Header.dwheight]);
  38.    end;
  39.    VideoFile.Free;
  40. 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
Reply

Marsh Posté le 13-09-2001 à 21:35:22    

Je vais regarder Rufo.
Merci bcp antp, c'est super sympa de m'avoir file du code.
c quoi les variable de type dwWord ? (juste pour la culture personelle, j'aime pas utilisé un truc sans savoir exactement ce que c'est)
En tout cas, je vais bien lire ton code et tout décrypter.
Cependant je crois qu'il y a un autre moyen avec les fonctions AviFileOpen et AvifileInfo, ben en tout cas si je réussi, je prendrais ta méthode. Alors encore merci, c'est sympa
a+


---------------
AraGorN Fils D'AraTHorN
Reply

Marsh Posté le 13-09-2001 à 21:44:52    

Rufo a dit:

Citation :

je sais pas mais essaye d'installer le composant Activex Windows Media Player (menu Composants->installer un activeX->WMP en bas de la liste). Avec un peu de chance, ce composant dispose de propriétés qui te donneront ces infos

 
 
je viens de regarder Rufo, et il y a p-e moyen que je m'en tire de cette façon, mais à mon avis c'est loin d'être la meilleur et la plus économique et niveau ressource.
Mais merci pour ton aidre


---------------
AraGorN Fils D'AraTHorN
Reply

Marsh Posté le 13-09-2001 à 22:55:18    

-ThOR- AraGorN a écrit a écrit :

c quoi les variable de type dwWord ? (juste pour la culture personelle, j'aime pas utilisé un truc sans savoir exactement ce que c'est)




 
byte = 1 octet
word = 2 octets
dword = double word = 4 octets
etc...
(si je ne me trompe pas)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 13-09-2001 à 22:55:19    

-ThOR- AraGorN a écrit a écrit :

Je vais regarder Rufo.
Merci bcp antp, c'est super sympa de m'avoir file du code.
c quoi les variable de type dwWord ? (juste pour la culture personelle, j'aime pas utilisé un truc sans savoir exactement ce que c'est)
En tout cas, je vais bien lire ton code et tout décrypter.
Cependant je crois qu'il y a un autre moyen avec les fonctions AviFileOpen et AvifileInfo, ben en tout cas si je réussi, je prendrais ta méthode. Alors encore merci, c'est sympa
a+  




 
avifileinfo, c'est en C/C++...

Reply

Marsh Posté le 13-09-2001 à 22:57:28    

déjà un truc que j'ai oublié de changer dans mon code:
 
FileList.FileName c'est le nom de fichier
 
donc si jamais y a des variables ou identifiants non reconnus, il se peut que ce soit des trucs de mon programme que j'ai oublié de remplacer ou de copier/coller.
 
et un truc que j'avais oublié de préciser (mais c'était pas dur à comprendre), la fonction donnant la taille la donne en Mo (d'où les deux divisions par 1024)

 

[edtdd]--Message édité par antp--[/edtdd]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 13-09-2001 à 23:03:48    

oui, merci pour tes précisions, mais à défaut d'être bon en anglais et de comprendre l'sdl de windows, je ne me débrouille pas trop mal en programmation. Et je n'ai eu aucun mal à comprendre ton code.
Alors encore merci pour tout


---------------
AraGorN Fils D'AraTHorN
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed