кодировать кадр YUV420 в VP9 - PullRequest
0 голосов
/ 19 ноября 2018

Как заголовок,

Я тяну кадры с 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);

Update1: YUV420P может быть закодирован как VP9!

1 Ответ

0 голосов
/ 21 ноября 2018

Я тяну кадры с 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 пример.

...