【问题标题】:encode YUV420 frame to VP9将 YUV420 帧编码为 VP9
【发布时间】:2019-04-22 05:47:17
【问题描述】:

作为标题,

我正在从 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);

编辑:wiki 使用 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!

【问题讨论】:

    标签: video encoding ffmpeg webm vp9


    【解决方案1】:

    我正在从 IP 摄像机中提取帧。我将输入的原始数据转换为 YUV420格式,想把YUV420编码成VP9,保存帧 作为 .webm 格式。我能做到吗?

    是的。这里是ffmpeg的官方例子:https://github.com/FFmpeg/FFmpeg/tree/master/doc/examples

    或者我应该输入 BGR444 格式进行编码吗?

    始终使用 yuv 格式,例如 yuv420p。不要使用RGB,即使支持也会低效。

    wiki 使用 2 pass 来设置参数,我可以在 1次通过

    是的,2 pass 有优势,但不是必需的。

    Blow 代码似乎可以正常工作,想知道我怎样才能将大小 视频(vp9)下来了?目前,我的大小与使用 h264 相似 编码器。

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

    【讨论】:

    • 我已经为 h264 和 vp9 编码了一个缩小的帧,并希望获得 VP9 的优势,它具有更小的尺寸但保持与 h264 相似的质量。视频很短,我设法更改关键帧间隔的参数以减小 vp9 的文件大小。
    猜你喜欢
    • 2017-12-04
    • 2017-05-13
    • 2021-10-03
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多