Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1324 connectés 

  FORUM HardWare.fr
  Programmation

  [Delphi] Fichiers Avi

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Delphi] Fichiers Avi

n°59427
-ThOR- Ara​GorN
Posté le 13-09-2001 à 17:46:56  profilanswer
 

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
mood
Publicité
Posté le 13-09-2001 à 17:46:56  profilanswer
 

n°59461
rufo
Pas me confondre avec Lycos!
Posté le 13-09-2001 à 20:31:31  profilanswer
 

-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 :)

n°59466
antp
Super Administrateur
Champion des excuses bidons
Posté le 13-09-2001 à 21:13:55  profilanswer
 

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
n°59473
-ThOR- Ara​GorN
Posté le 13-09-2001 à 21:35:22  profilanswer
 

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
n°59475
-ThOR- Ara​GorN
Posté le 13-09-2001 à 21:44:52  profilanswer
 

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
n°59485
antp
Super Administrateur
Champion des excuses bidons
Posté le 13-09-2001 à 22:55:18  profilanswer
 

-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
n°59486
rufo
Pas me confondre avec Lycos!
Posté le 13-09-2001 à 22:55:19  profilanswer
 

-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++...

n°59488
antp
Super Administrateur
Champion des excuses bidons
Posté le 13-09-2001 à 22:57:28  profilanswer
 

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
n°59491
-ThOR- Ara​GorN
Posté le 13-09-2001 à 23:03:48  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [Delphi] Fichiers Avi

 

Sujets relatifs
[VB] lire/écrire dans des fichiers[Delphi] TDBGrid et entete de colonnes sur plusieurs lignes...
DELPHI + CHOIX SGBDRDelphi 5 et WebBrowser
Question simple en delphi[Delphi]Equivalent au composant TactiveMovie
[langage quelconque]modifier les commentaires des fichiers DOC,MAX ...[VC++] Créer des barres d'avancement pour copie de fichiers
[Delphi] TPoint -> StringVariables d'environnement sous DELPHI
Plus de sujets relatifs à : [Delphi] Fichiers Avi


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR