将YUV420帧编码为VP9

时间:2018-11-19 20:07:00

标签: video encoding ffmpeg webm vp9

作为标题,

我正在从IP摄像机拉帧。我将输入的原始数据转换为YUV420格式,并希望将YUV420编码为VP9,并将帧另存为.webm格式。我能做到吗?还是应该输入BGR444格式进行编码?

BTW,设置用于编码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);

编辑:Wiki使用2遍来设置参数,我可以用1遍来做吗?

Edit2:爆破代码似乎有效,想知道如何降低视频(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 :(得分:0)

  

我正在从IP摄像机拉帧。我将输入的原始数据转换为   YUV420格式,并希望将YUV420编码为VP9,并保存帧   为.webm格式。我能做到吗?

是的。以下是ffmpeg的官方示例:https://github.com/FFmpeg/FFmpeg/tree/master/doc/examples

  

还是应该输入BGR444格式进行编码?

始终使用yuv格式的yuv格式。请勿使用RGB,即使受支持也不会有效。

  

维基使用2次传递来设置参数,我可以在   1次通过

是的,两次通过可以带来优势,但不是必须的。

  

打击代码似乎可以正常工作,想知道如何才能将   视频(vp9)下来?目前,我的尺寸与使用h264类似   编码器。

您需要的是ffmpeg的sws_scale功能。这有两件事,缩放和格式转换,都可以同时执行。查看scaling_video.c示例。