Перейти к содержимому
Compvision.ru
al072

Уменьшить размер видео файла cv::VideoWriter

Recommended Posts

Добрый день! Коллеги, подскажите пожалуйста при помощи каких codec  можно уменьшить размер выходного видео файла? Задача получить минимальный размер при сохранении среднего качества картинки получаемой с Web камеры. Перепробовал различные комбинации кодеков/выходного формата: 'M', 'J', 'P', 'G' / .avi , 'M', 'P, '4', 'V' / .mp4 , 'D', 'I', 'V', 'X' / .avi , 'A', 'V', 'C', '1' / .avi . На данный момент 30 минут видео с 10 FPS  весит > 1GB, в идеале хотелось бы добиться 200-300 мбайт.

Вот код функции с помощью которого пишу видео файл с web камеры:

    int fcc = CV_FOURCC('M', 'J', 'P', 'G');
    int fps = 25;
    string filelocation = "С:\\video.avi";
    cv::Size frameSize(videoCapture.get(CV_CAP_PROP_FRAME_WIDTH), videoCapture.get(CV_CAP_PROP_FRAME_HEIGHT));
    VideoWriter testwriter(filelocation, fcc, fps, cv::Size(640,480), true);
    while (true)
    {
            cv::Mat writefrm;
            //Get frame from webcam
            videoCapture >> writefrm;
    }

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Думается H.264 или H.265 должны жать по максимуму, но вряд ли сильно плотнее чем mpeg4 или divX.. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
43 минуты назад, Smorodov сказал:

Думается H.264 или H.265 должны жать по максимуму, но вряд ли сильно плотнее чем mpeg4 или divX.. 

Пробовал выставлять в настройках H.264 +avi; H.264 + mkv, H.264 + mp4 , но почему-то не одна из этих связок кодек+формат не захотела записывать файл . Для H.264 нужно специальные кодеки на ПК ставить или этот кодек как MJPG по умолчанию в винде есть?

Может есть какие либо более достойные альтернативы VideoWriter? Больно уж этот класс скудный , может конечно в более свежих сборках OpenCV его допилили и доработали, но я использую версию 2.4.1 и как то совсем не весело., особенно огорчил метод VideoWriter::release(); С многопоточностью он походу дружит слабо, либо вообще не дружит.. при запуске в boost::thread метод показал крайне не стабильную работу через раз записывал файл, вызывал завершение программы, пришлось синхронизировать потоки и танцевать с mutex 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

A x264  работает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
10 часов назад, Nuzhny сказал:

A x264  работает?

Не заработал.. пробовал выбрать выходные форматы: .mkv и .avi

Первый даже файл не создался., второй 0 байт

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тогда и правда лучше проверь версии поновей, они с ffmpeg хорошо дружат. Ну и сам ffmpeg из командной строки можешь проверить - умеет ли он h.264

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У меня под виндой обычно установлен k lite codec pack и его, как правило, хватает на все случаи жизни. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×