Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Запись видео


Автор: deniska 15.8.2013, 14:48
Есть камера, с нее получаю кадры-массивы RGB. появилась задача сохранять видео в каком-либо удобоваримом для разных проигрывателей формате. порыскал в тырнете, реализовал сие с пом vfw. AVIFileOpen, AVIStreamWrite и тд. вопрос вот в чем: при достижении видеофайлом размера в 4,294,967,295 байт(ограничение uint), AVIStreamWrite втихую перестает что-либо записывать в этот файл. 
1. Это ограничение как-то обходится? пока сделал после каждой записи кадра проверку на размер записанных данных и индексирование получаемых видеофайлов. тут проблема в том, что я не знаю сколько реально байт записалось на диск (изза сжатия реальный файл получается меньше, чем я расчитываю по формуле "размер кадра*число кадров")

2. может есть библиотеки которые существенно качественне с такой задачей справятся? (размер кадров 480*480, быстродействие, потеря качества минимальная, размер видеофайла минимален)

все это под виндой.
кадры летят до 50 ФПС, но помимо этого у программы еще много других параллельных задач, поэтому быстродействие важнО.

спасибо!

Автор: Rickert 20.10.2013, 11:51
1) У вас файловая система FAT32? Там ограничение на размер файла - 4 гига.

Автор: deniska 20.10.2013, 17:13
ntfs...

Автор: Pavia 4.11.2013, 09:05
deniska, 
vfw устаревшая технология/библиотека она не поддерживается.  Разумеется что она не держит AVI файлы с размером более 4ГБ так как устарела со времён 95 когда более чем об 1 ГБ не слышали а пользовались 40-5-- мб дисками. 

Используйте современные DirectX, FFMpeg и тп.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)