Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.118.227.69] |
|
Сообщ.
#1
,
|
|
|
Задача: склеить несколько файлов BMP как кадры и создать видеофайл.
|
Сообщ.
#2
,
|
|
|
Я как-то так делал (язык - Си; на бэйсик переведёте, думаю):
extern SIZE openGLsize; // размеры ... PAVIFILE aviI; // файл PAVISTREAM potok; // поток AVISTREAMINFOW info={0}; // описание потока ::AVIFileInit(); // начало=инициализация AVI библиотеки int ret = ::AVIFileOpenW( &aviI, fName, OF_CREATE|OF_WRITE, NULL); if( ret ) { ret = -1; LBL_goOut: ::AVIFileExit(); // закончили return ret; } info.fccType = streamtypeVIDEO; info.fccHandler = mmioFOURCC('M','S','V','C'); info.dwFlags = AVISTREAMINFO_DISABLED; info.dwCaps = AVIFILECAPS_CANREAD|AVIFILECAPS_NOCOMPRESSION|AVIFILECAPS_ALLKEYFRAMES; info.dwScale = 1; info.dwRate = (int)(fps*1); info.dwLength = len*interK; // 30; info.dwQuality = 5000; // качество : 0..10*1000 info.dwSampleSize = 0; // величина кадра : 0=меняющийся info.rcFrame.left = info.rcFrame.top = 0; info.rcFrame.right = openGLsize.cx, info.rcFrame.bottom = openGLsize.cy; wcscpy( info.szName, L"Моё видео"); ret = ::AVIFileCreateStreamW( aviI, &potok, &info); if( ret ) { ret=-2; goto LBL_goOut; } BITMAPINFOHEADER bi={sizeof(BITMAPINFOHEADER),0}; bi.biWidth = info.rcFrame.right, bi.biHeight = info.rcFrame.bottom, bi.biPlanes = 1, bi.biBitCount = 32, bi.biCompression = 0, bi.biSizeImage = openGLsize.cx*openGLsize.cy*4; ::AVIStreamSetFormat( potok, 0, &bi,sizeof(BITMAPINFOHEADER)); ::AVIFileRelease( aviI ); //сам файл надо закpывать до записи for( int fr=0; fr<len-1; fr++) // ключевые { PucyeM(); // перерисуем всё glReadPixels( 0,0, openGLsize.cx,openGLsize.cy, GL_BGRA_EXT, GL_UNSIGNED_BYTE, ptr); // coxpaним ::AVIStreamWrite( potok,total,1, ptr, openGLsize.cx*openGLsize.cy*4, AVIIF_KEYFRAME, &wrSamplesOK, &wrBytesOK); } ::AVIStreamRelease( potok ); ::AVIFileExit();// закончили |
Сообщ.
#3
,
|
|
|
В разделе есть готовый пример Как сделать, чтобы программа не зависала (сообщение #2848004)
|