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

 


Dernière réponse
Sujet : le meilleur soft pour classer ses divx
Mistral_ winner

felix158 a écrit :


 
En effet, c'est troublant...


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


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Mistral_ winner

felix158 a écrit :


 
En effet, c'est troublant...


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

felix158

xolth a écrit :


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


 
En effet, c'est troublant...

xolth

antp a écrit :

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


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

antp c'est quoi ce up de vieux topic :heink:
sorg ok, je vais tester
thekiller

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 ?

antp 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]

thekiller

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 ?

antp 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
thekiller je parle pas du tient mais de lui --->  http://www.basedvdivx.com/
 
 
 :lol:
antp

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 ?

bentotoro 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
thekiller :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+
antp 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]

shaman3 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]

Cyme S'lut .. mayb ya déjà eu c'te réponse .. j'ai pas eu le temps de tout lire sorry .. >> "Where is it" ..
antp 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]


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)