Кодировать кадр YUV420 в VP9

Как название,

Я тяну кадры с IP-камеры. Я конвертировал исходные данные в формат YUV420 и хотел бы закодировать YUV420 в VP9 и сохранить кадры в формате.webm. Смогу ли я сделать это? Или я должен ввести формат BGR444 для кодирования?

Кстати, для настройки параметров для кодирования vp9. Это av_dict_set() правильная функция для настройки параметров?

Пример: ( http://wiki.webmproject.org/ffmpeg/vp9-encoding-guide)

av_dict_set(&opt, "crf"    , "23", 0);
av_dict_set(&opt, "speed"  , "4" , 0);
av_dict_set(&opt, "threads", "8" , 0);
av_dict_set(&opt, "pass"   , "1" , 0);
av_dict_set(&opt, "b:v", "1400k", 0);

Изменить: Вики использует 2 прохода для установки параметров, смогу ли я сделать с 1 проход?

Edit2: Blow-код, кажется, работает, интересно, как я могу уменьшить размер видео (vp9)? В настоящее время у меня такой же размер, как при использовании кодера h264.

    av_dict_set(&opt, "crf"    ,        "45", 0);  
    av_dict_set(&opt, "speed"  ,        "8" , 0); 
    av_dict_set(&opt, "quality",        "realtime", 0);
    av_dict_set(&opt, "threads",        "8" , 0);
    av_dict_set(&opt, "tile-columns",   "3", 0);
    av_dict_set(&opt, "frame-parallel", "1", 0);
    av_dict_set(&opt, "row-mt",         "1", 0);

Обновление 1: YUV420P можно закодировать как VP9!

1 ответ

Я тяну кадры с IP-камеры. Я конвертировал исходные данные в формат YUV420 и хотел бы закодировать YUV420 в VP9 и сохранить кадры в формате.webm. Смогу ли я сделать это?

Да. Вот официальные примеры ffmpeg: https://github.com/FFmpeg/FFmpeg/tree/master/doc/examples

Или я должен ввести формат BGR444 для кодирования?

Всегда используйте форматы yuv, такие как yuv420p. Не используйте RGB, даже если он поддерживается, будет неэффективным.

Вики использует 2 прохода для установки параметров, смогу ли я сделать это за 1 проход

Да, 2 прохода дает преимущества, но не обязательно.

Удар, кажется, работает, интересно, как я могу уменьшить размер видео (vp9)? В настоящее время у меня такой же размер, как при использовании кодера h264.

Что вам нужно sws_scale функциональность ffmpeg. Это делает две вещи, масштабирование и преобразование формата, обе могут выполняться одновременно. Проверьте scaling_video.c пример.

Другие вопросы по тегам