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

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

le meilleur soft pour classer ses divx

n°258511
antp
Super Administrateur
Champion des excuses bidons
Posté le 29-04-2002 à 19:02:42  profilanswer
 

Reprise du message précédent :
Merci.
Pas super lisible comme code mais bon :/ :D
Va falloir que je traduise tout ça en Pascal...
Là tu utilises des fonctions de Windows du style Video for Windows ?  
À quel endroit du code tu récupères le bitrate ?
Moi en fait j'avais "à la main" été décrypter le Avi (c'est amusant à faire :D)

 

[jfdsdjhfuetppo]--Message édité par antp le 29-04-2002 à 19:03:46--[/jfdsdjhfuetppo]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
mood
Publicité
Posté le 29-04-2002 à 19:02:42  profilanswer
 

n°258531
Cyme
Est Solarus Oth Mythas
Posté le 29-04-2002 à 19:42:54  profilanswer
 

S'lut .. mayb ya déjà eu c'te réponse .. j'ai pas eu le temps de tout lire sorry .. >> "Where is it" ..


---------------
([: -- Shamakito Corp -- :])
n°258534
shaman3
Posté le 29-04-2002 à 19:53:09  profilanswer
 

Bon c'est vrai que mon code est pas clair, mais decrypter l'avi
"a la main" genre recuperer un octet a un offset predefini du fichier c'est coder comme un porc :)
 
Sinon pour ton probleme tu n'as pas le bitrate direct il faut recuperer la taille de chaque frame avec cette boucle suivante (portion du code du dernier post):
 
for (unsigned int l=0;l < cl_AviStreamInfo[i].dwLength;l++) {
  AVIStreamSampleSize( cl_pAviStream,  l,  &cl_lSamplesize);
  cl_lVideoTaille += cl_lSamplesize;
}
 
cl_lVideoTaille = taille du flux
 
ensuite comme tu as aussi le nombre d'images dans la structure
renvoyé par la fonction AVIStreamInfo ligne :
if(!AVIStreamInfo(cl_pAviStream,&cl_AviStreamInfo[i],sizeof(AVISTREAMINFO))) {
 
De la doc msdn :
AVISTREAMINFO
The AVISTREAMINFO structure contains information for a single stream.  
 
typedef struct {  
    DWORD fccType;  
    DWORD fccHandler;  
    DWORD dwFlags;  
    DWORD dwCaps;  
    WORD  wPriority;  
    WORD  wLanguage;  
    DWORD dwScale;  
    DWORD dwRate;  
    DWORD dwStart;  
    DWORD dwLength;  
    DWORD dwInitialFrames;  
    DWORD dwSuggestedBufferSize;  
    DWORD dwQuality;  
    DWORD dwSampleSize;  
    RECT  rcFrame;  
    DWORD dwEditCount;  
    DWORD dwFormatChangeCount;  
    char  szName[64];  
} AVISTREAMINFO;  
 
dwLength = nombre d'images
Donc plus de probleme pour calculer le bitrate....

 

[jfdsdjhfuetppo]--Message édité par shaman3 le 29-04-2002 à 19:55:24--[/jfdsdjhfuetppo]


---------------
L'agence www.PolyDev.com, entreprise spécialisée dans l'accompagnement et le suivi de vos projets multimédia (3d, 3d web, site web,  logiciels spécialisés).
n°258551
antp
Super Administrateur
Champion des excuses bidons
Posté le 29-04-2002 à 20:17:02  profilanswer
 

Ok merci je verrai tout ça mercredi ou ce week-end :)
 
 

shaman3 a écrit a écrit :

Bon c'est vrai que mon code est pas clair, mais decrypter l'avi
"a la main" genre recuperer un octet a un offset predefini du fichier c'est coder comme un porc :)
 




 
:non: je prends pas un endroit "prédéfinit".
Le AVI a une structure, avec des blocs de 4 octets (DWORD) de type LIST, strf, strh, strl, vids, auds, etc...
J'analyse le tout.
J'ai déjà fait des tests avec des AVI qui ont deux stream audio, ou des AVI où les streams ont pas leur header au même endroit, ça marche nickel.
 
Voilà le code que j'avais fait :
 

Code :
  1. unit functions_avi;
  2. interface
  3. uses
  4.   Windows, Graphics;
  5. type
  6.   FOURCC = array[1..4] of Char;
  7.   TAVIHeader = record
  8.     dwMicroSecPerFrame:     DWORD;
  9.     dwMaxBytesPerSec:       DWORD;
  10.     dwReserved1:            DWORD;
  11.     dwFlags:                DWORD;
  12.     dwTotalFrames:          DWORD;
  13.     dwInitialFrames:        DWORD;
  14.     dwStreams:              DWORD;
  15.     dwSuggestedBufferSize:  DWORD;
  16.     dwWidth:                DWORD;
  17.     dwHeight:               DWORD;
  18.     dwScale:                DWORD;
  19.     dwRate:                 DWORD;
  20.     dwStart:                DWORD;
  21.     dwLength:               DWORD;
  22.   end;
  23.   TStreamHeader = record
  24.     fccType:                FOURCC;
  25.     fccHandler:             FOURCC;
  26.     dwFlags:                DWORD;
  27.     dwReserved1:            DWORD;
  28.     dwInitialFrames:        DWORD;
  29.     dwScale:                DWORD;
  30.     dwRate:                 DWORD;
  31.     dwStart:                DWORD;
  32.     dwLength:               DWORD;
  33.     dwSuggestedBufferSize:  DWORD;
  34.     dwQuality:              DWORD;
  35.     dwSampleSize:           DWORD;
  36.   end;
  37.   TVidsStreamFormat = BITMAPINFO;
  38.   TAudsStreamFormat = record
  39.     wFormatTag:             Word;
  40.     nChannels:              Word;
  41.     nSamplesPerSec:         DWORD;
  42.     nAvgBytesPerSec:        DWORD;
  43.     nBlockAlign:            Word;
  44.     wBitsPerSample:         Word;
  45.     cbSize:                 Word;
  46.   end;
  47. function ExtractAVIInfos(const AVIFileName: string; out ResX, ResY, Length: integer; out FrameRate: single; out VideoCodec, AudioCodec: string): boolean;
  48. implementation
  49. uses
  50.   Sysutils, Dialogs, ShellAPI, classes, StrUtils;
  51. const
  52.   RIFF = $46464952;
  53.   AVI_ = $20495641;
  54.   LIST = $5453494C;
  55.   HDRL = $6C726468;
  56.   AVIH = $68697661;
  57.   STRL = $6C727473;
  58.   STRH = $68727473;
  59.   STRF = $66727473;
  60.   VIDS = $73646976;
  61.   AUDS = $73647561;
  62. var
  63.   DWORDSize: DWORD = SizeOf(DWORD);
  64. function ExtractAVIInfos(const AVIFileName: string; out ResX, ResY, Length: integer; out FrameRate: single; out VideoCodec, AudioCodec: string): boolean;
  65. var
  66.   VideoFile: THandleStream;
  67.   FileHandle: THandle;
  68.   AAVIHeader: TAVIHeader;
  69.   AVidsStreamFormat: TVidsStreamFormat;
  70.   AAudsStreamFormat: TAudsStreamFormat;
  71.   StructHeader, ListHeader: DWORD;
  72.   StructSize, ListSize: DWORD;
  73.   FullHeaderStart, FullHeaderSize: DWORD;
  74.   LastPos: Int64;
  75. begin
  76.   Result := False;
  77.   VideoFile := nil;
  78.   FileHandle := CreateFile(PChar(AVIFileName), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_ALWAYS, 0, 0);
  79.   if FileHandle = INVALID_HANDLE_VALUE then
  80.     Exit;
  81.   try
  82.     VideoFile := THandleStream.Create(FileHandle);
  83.     VideoFile.Seek(0, soFrombeginning);
  84.     VideoFile.Read(StructHeader, DWORDSize);
  85.     VideoFile.Read(StructSize, DWORDSize);
  86.     if (StructHeader <> RIFF) then
  87.       Exit;
  88.     VideoFile.Read(StructHeader, DWORDSize);
  89.     if (StructHeader <> AVI_) then
  90.       Exit;
  91.     VideoFile.Read(StructHeader, DWORDSize);
  92.     VideoFile.Read(StructSize, DWORDSize);
  93.     if (StructHeader <> LIST) then
  94.       Exit
  95.     else
  96.     begin
  97.       FullHeaderStart := VideoFile.Position;
  98.       FullHeaderSize := StructSize;
  99.     end;
  100.     VideoFile.Read(StructHeader, DWORDSize);
  101.     if StructHeader <> HDRL then
  102.       Exit;
  103.     VideoFile.Read(StructHeader, DWORDSize);
  104.     VideoFile.Read(StructSize, DWORDSize);
  105.     if (StructHeader <> AVIH) then
  106.       Exit;
  107.     LastPos := VideoFile.Position;
  108.     VideoFile.Read(AAVIHeader, SizeOf(AAVIHeader));
  109.     ResX := AAVIHeader.dwWidth;
  110.     ResY := AAVIHeader.dwHeight;
  111.     Length := (AAVIHeader.dwTotalFrames * (AAVIHeader.dwMicroSecPerFrame div 1000)) div 60000;
  112.     FrameRate := 1000000 / AAVIHeader.dwMicroSecPerFrame;
  113.     VideoCodec := '';
  114.     AudioCodec := '';
  115.     Result := True;
  116.     ListSize := StructSize;
  117.     while VideoFile.Position < (FullHeaderStart + FullHeaderSize) do
  118.     begin
  119.       VideoFile.Seek(LastPos, soFromBeginning);
  120.       VideoFile.Seek(ListSize, soFromCurrent);
  121.       VideoFile.Read(ListHeader, DWORDSize);
  122.       VideoFile.Read(ListSize, DWORDSize);
  123.       if (ListHeader <> LIST) then
  124.         Exit;
  125.       LastPos := VideoFile.Position;
  126.       VideoFile.Read(StructHeader, DWORDSize);
  127.       if (StructHeader <> STRL) then
  128.         Exit;
  129.       VideoFile.Read(StructHeader, DWORDSize);
  130.       VideoFile.Read(StructSize, DWORDSize);
  131.       if (StructHeader <> STRH) then
  132.         Exit;
  133.       VideoFile.Read(StructHeader, DWORDSize);
  134.       case StructHeader of
  135.         VIDS:
  136.           begin
  137.             VideoFile.Seek(StructSize - DWORDSize, soFromCurrent);
  138.             VideoFile.Read(StructHeader, DWORDSize);
  139.             VideoFile.Read(StructSize, DWORDSize);
  140.             if (StructHeader = STRF) then
  141.             begin
  142.               VideoFile.Read(AVidsStreamFormat, SizeOf(AVidsStreamFormat));
  143.               VideoCodec := Copy(FourCC(AVidsStreamFormat.bmiHeader.biCompression), 1, 4);
  144.             end;
  145.           end;
  146.         AUDS:
  147.           begin
  148.             VideoFile.Seek(StructSize - DWORDSize, soFromCurrent);
  149.             VideoFile.Read(StructHeader, DWORDSize);
  150.             VideoFile.Read(StructSize, DWORDSize);
  151.             if (StructHeader = STRF) then
  152.             begin
  153.               VideoFile.Read(AAudsStreamFormat, SizeOf(AAudsStreamFormat));
  154.               AudioCodec := AudioCodec + IntToHex(AAudsStreamFormat.wFormatTag, 4);
  155.             end;
  156.           end;
  157.       end;
  158.     end;
  159.   finally
  160.     VideoFile.Free;
  161.     CloseHandle(FileHandle);
  162.   end;
  163. end;
  164. end.

 

[jfdsdjhfuetppo]--Message édité par antp le 29-04-2002 à 20:17:57--[/jfdsdjhfuetppo]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°260728
thekiller
Posté le 03-05-2002 à 14:54:53  profilanswer
 

:hello:  
 
tres bon prog :)
 
bon cependant quelque remarque :
 
le bitrate ne sert a rien
eux faudrais pouvoir rajouter c commentaire perso
aussi si le site de recherche est hs on fait comment ?
 
 
a+


---------------
Mon feedback
n°260738
bentotoro
Posté le 03-05-2002 à 15:04:48  profilanswer
 

Ya aussi un autre soft dont personne n'a parlé : DVDProfiler !
 
Excellent : Jacquettes, résumés, exportation sous différents formats, GRATUIT !!!
 
http://www.dvdprofiler.com

n°260765
antp
Super Administrateur
Champion des excuses bidons
Posté le 03-05-2002 à 15:44:34  profilanswer
 

thekiller a écrit a écrit :

 
le bitrate ne sert a rien
eux faudrais pouvoir rajouter c commentaire perso
aussi si le site de recherche est hs on fait comment ?




 
Heu le bitrate peut être utile pour les divx, y a plein de monde qui le voulait, je peux pas satisfaire tout le monde :D
T'as qu'à mettre la zone du DVD dedans :p
Les commentaires persos y a une zone "Commentaires" pour ça :D
Et le site de recherche, bhen si il est HS j'y peux rien moi ... C'est lequel qui est HS ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°260879
thekiller
Posté le 03-05-2002 à 18:32:43  profilanswer
 

je parle pas du tient mais de lui --->  http://www.basedvdivx.com/
 
 
 :lol:


---------------
Mon feedback
n°260904
antp
Super Administrateur
Champion des excuses bidons
Posté le 03-05-2002 à 19:33:03  profilanswer
 

Ha bhen pour l'autre ça ne sert à rien de faire des remarques vu que le gars ne repasse plus jamais sur le forum :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°260969
thekiller
Posté le 03-05-2002 à 21:55:52  profilanswer
 

antp a écrit a écrit :

Ha bhen pour l'autre ça ne sert à rien de faire des remarques vu que le gars ne repasse plus jamais sur le forum :D  



ah bon :(
 
ben il est pas mal pourtant :)
tu veux que je test le tient, est-il aussi intuitif ?


---------------
Mon feedback
mood
Publicité
Posté le 03-05-2002 à 21:55:52  profilanswer
 

n°260976
antp
Super Administrateur
Champion des excuses bidons
Posté le 03-05-2002 à 22:17:35  profilanswer
 

Aussi intuitif je sais pas, mais moi je trouve le mien plus complet, plus joli et plus ergonomique... Mais bon mon avis n'est pas très objectif je pense :D
 
De toute façon la prochaine beta (mise en ligne demain je pense) pourra importer les fichiers de BaseDVDivx, donc si tu veux passer de BaseDVDivx à mon soft par après ce sera possible ;)

 

[jfdsdjhfuetppo]--Message édité par antp le 03-05-2002 à 22:18:16--[/jfdsdjhfuetppo]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°260977
thekiller
Posté le 03-05-2002 à 22:20:44  profilanswer
 

antp a écrit a écrit :

Aussi intuitif je sais pas, mais moi je trouve le mien plus complet, plus joli et plus ergonomique... Mais bon mon avis n'est pas très objectif je pense :D
 
De toute façon la prochaine beta (mise en ligne demain je pense) pourra importer les fichiers de BaseDVDivx, donc si tu veux passer de BaseDVDivx à mon soft par après ce sera possible ;)  
 
 



ben en faite je m'en fou je test depuis aujourd'hui, par contre y a des films que je ne trouve pas :(
avec le tient je vois pas ou il faut exporter ! ta pas icq ?


---------------
Mon feedback
n°284938
sorg
trop sur HFR depuis 2001
Posté le 14-06-2002 à 12:01:28  profilanswer
 

ok, je vais tester

n°284965
antp
Super Administrateur
Champion des excuses bidons
Posté le 14-06-2002 à 12:45:48  profilanswer
 

c'est quoi ce up de vieux topic :heink:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1379568
xolth
Ranx.. znort!
Posté le 15-03-2008 à 17:54:25  profilanswer
 

antp a écrit :

c'est quoi ce up de vieux topic :heink:


Comment savais-tu que j'allais le faire???
[:xolth]

n°1758879
felix158
glop glop
Posté le 15-12-2011 à 22:04:25  profilanswer
 

xolth a écrit :


Comment savais-tu que j'allais le faire???
[:xolth]


 
En effet, c'est troublant...

n°1759047
Mistral_ w​inner
Aucun rapport.
Posté le 16-12-2011 à 21:43:55  profilanswer
 

felix158 a écrit :


 
En effet, c'est troublant...


Qu'est-ce qui est troublant ? Ton up de pres de 4 ans [:neuropsy:1]


---------------
Life is like a pubic hair on a toilet seat. Eventually you'll get pissed off...
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
Pb conversion divx avec Tmpeg[Divx 5 : me taper pas ! ] Y a pas kkun qui a fait un bon tuto ?
DivX 3.11 et 5.01 ??? installer les deux ? compatibilite ?DivX Box dans ma voiture !
archos jukebox 6000 durée d'1 transfert d'un divx sur l'USB ?DivX avec son 5.1 sous XP
Couper un divxprobleme divx mac
kelkin sait il encoder en divx 5 ?HELP Hollywod + Elsa GloriaII + sortie Tv + audio + Divx???
Plus de sujets relatifs à : le meilleur soft pour classer ses divx


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