Кодировать кадр 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
пример.