Creer fichier video

Snooker9 Messages postés 1 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 3 mars 2009 - 3 mars 2009 à 10:00
nanonavich Messages postés 54 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 15 août 2015 - 4 mars 2009 à 21:00
Bonjour à tous,


Je cherche à créer un fichier vidéo, en avi ou asf par exemple.


J'arrive très bien à créer des images bmp cadencées à 25fps, à partir des
données brutes.

Comment créer plutôt un fichier vidéo à partir de ces données brutes ?

Peut être avez vous une piste vers laquelle chercher ? Ou connaissez vous l'en
tête à insérer dans mes frames et mon fichier avi ?

Je trouve beaucoup d'informations pour Windows mais peu pour Linux.


Je vous remercie d'avance.


@Bientôt.


OS : Linux

Langage : C





PS : Je capture mes
données en RGB32 à partir d’une carte d’acquisition.

1 réponse

nanonavich Messages postés 54 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 15 août 2015
4 mars 2009 à 21:00
http://easybmptoavi.sourceforge.net/Downloads.html

pour windows ses tous ce que j ai puet trouver

<ol class="dp-cpp" start="1"><li>void WriteBMIH( FILE* fp )   </li><li>{   </li><li> if( BitsPerPixel != 24 )   </li><li> { BitsPerPixel = 24; }   </li><li>    </li><li> ebmpDWORD biSize          = 40;   </li><li> ebmpDWORD biWidth         = Width;   </li><li> ebmpDWORD biHeight        = Height;   </li><li> ebmpWORD  biPlanes        = 1;   </li><li> ebmpWORD  biBitCount      = BitsPerPixel;   </li><li> ebmpDWORD biCompression   = 0;   </li><li> ebmpDWORD biSizeImage     = (ebmpDWORD) DetermineFrameDataSize();   </li><li> ebmpDWORD biXPelsPerMeter = DefaultXPelsPerMeter;   </li><li> ebmpDWORD biYPelsPerMeter = DefaultYPelsPerMeter;   </li><li> ebmpDWORD biClrUsed       = 0;   </li><li> ebmpDWORD biClrImportant  = 0;    </li><li>   </li><li> // fix default biSize in BMIH in EasyBMP!   </li><li>   </li><li> WriteDWORD( biSize, fp );   </li><li> WriteDWORD( biWidth, fp );   </li><li> WriteDWORD( biHeight, fp );   </li><li> WriteWORD(  biPlanes, fp );   </li><li> WriteWORD(  biBitCount, fp );   </li><li> WriteDWORD( biCompression, fp );   </li><li> WriteDWORD( biSizeImage, fp );   </li><li> WriteDWORD( biXPelsPerMeter, fp );   </li><li> WriteDWORD( biYPelsPerMeter, fp );   </li><li> WriteDWORD( biClrUsed , fp );   </li><li> WriteDWORD( biClrImportant, fp );   </li><li>    </li><li> return;   </li><li>}   </li><li>   </li><li>void WriteFrame( BMP& Input, ebmpDWORD ImageSize, FILE* fp )   </li><li>{   </li><li> WriteString( "00db", fp );   </li><li> WriteDWORD( ImageSize, fp );   </li><li>     </li><li> int i,j,k;   </li><li>   </li><li> int BytesPerRow = ImageSize / Input.TellHeight();   </li><li>   </li><li> char* LineBuffer;   </li><li> LineBuffer = new char [BytesPerRow];   </li><li>    </li><li> for( j=Input.TellHeight()-1; j > -1 ; j-- )   </li><li> {   </li><li>  LineBuffer[0] = '\0';   </li><li>  k=0;   </li><li>  for( i=0 ; i < Input.TellWidth() ; i++ )   </li><li>  {   </li><li>   *(LineBuffer+k) = ( Input(i,j)->Blue );  k++;   </li><li>   *(LineBuffer+k) = ( Input(i,j)->Green ); k++;   </li><li>   *(LineBuffer+k) = ( Input(i,j)->Red );   k++;   </li><li>  }   </li><li>  WriteBufferToFile( LineBuffer, BytesPerRow, fp );   </li><li> }   </li><li> return;   </li><li>}   </li><li>   </li><li>void WriteSTRH( FILE* fp )   </li><li>{   </li><li> WriteString("strh", fp );   </li><li> WriteDWORD(56, fp);   </li><li> WriteString("vids", fp );   </li><li> WriteString("DIB ", fp );    </li><li> WriteDWORD(0, fp ); // flags   </li><li> WriteDWORD(0, fp ); // priority   </li><li> WriteDWORD(0, fp ); // initial frames   </li><li> ebmpDWORD dwMicroSecPerFrame = (ebmpDWORD) ( 1000000.0 / FrameRate );   </li><li> WriteDWORD( dwMicroSecPerFrame, fp ); // dwScale   </li><li> WriteDWORD( 1000000, fp ); // dwRate   </li><li> WriteDWORD(0, fp ); // dwStart   </li><li> WriteDWORD( NumberOfFrames, fp ); // dwLength   </li><li> ebmpDWORD dwSuggestedBufferSize  = (ebmpDWORD) DetermineFrameDataSize();   </li><li> WriteDWORD( dwSuggestedBufferSize , fp ); // dwSuggestedBufferSize   </li><li> WriteDWORD(0, fp ); // dwQuality   </li><li> WriteDWORD(0, fp ); // dwSampleSize    </li><li> WriteDWORD(0, fp );   </li><li> WriteWORD( Width , fp );   </li><li> WriteWORD( Height, fp );   </li><li>}  
</li></ol>
0
Rejoignez-nous