首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用FFmpeg x264与libvpx-vp9的CRF控件

使用FFmpeg x264与libvpx-vp9的CRF控件
EN

Stack Overflow用户
提问于 2016-10-18 17:02:19
回答 1查看 3.5K关注 0票数 3

我有一些在x264中使用ffmpeg的经验,我想与libvpx-vp9进行比较。我测试了一个原始视频的简单一次编码,改变了x264和libvpx-vp9的设置和预置。我是libvpx的新手,我仔细地跟踪了,但是我可能仍然指定了错误的参数组合,因为我得到的结果对我来说没有多大意义。

对于x264,我做到了:

代码语言:javascript
复制
ffmpeg -i test_video.y4m -c:v libx264 -threads 1 -crf <crf> -preset <preset> -y output.mkv 

并取得了以下结果:

代码语言:javascript
复制
codec  , settings                        , time        , PSNR      ,bitrate
libx264,['-crf', '20', '-preset', 'fast'],13.1897280216, 42.938337 ,15728
libx264,['-crf', '20', '-preset', 'medium'],16.80494689, 42.879753 ,15287
libx264,['-crf', '20', '-preset', 'slow'],25.1142120361, 42.919206 ,15400
libx264,['-crf', '30', '-preset', 'fast'],8.79047083855, 37.975141 ,4106
libx264,['-crf', '30', '-preset', 'medium'],9.936599016, 37.713778 ,3749
libx264,['-crf', '30', '-preset', 'slow'],13.0959510803, 37.569511 ,3555

这对我来说是有意义的,如果给出一个crf值,你可以得到一个PSNR值,而改变预设可以降低比特率,但增加编码的时间。

对于libvpx-vp9,我做到了:

代码语言:javascript
复制
ffmpeg -i test_video.y4m -c:v libvpx-vp9 -threads 1 -crf <crf> -cpu-used <effort> -y output.mkv 

首先,我从在线教程中认为,-cpu-used选项等同于x264中的-preset。对吗?如果是的话,-quality的区别是什么?此外,由于范围从-8到8,我假设负值,其中快速选项,而正值,最慢。不过,我得到的结果非常令人困惑:

代码语言:javascript
复制
codec     , settings                      , time        , PSNR     ,bitrate
libvpx-vp9,['-crf', '20', '-cpu-used', '-2'],19.6644911766,32.54317,571
libvpx-vp9,['-crf', '20', '-cpu-used', '0'],176.670887947,32.69899,564
libvpx-vp9,['-crf', '20', '-cpu-used', '2'],20.0206270218,32.54317,571
libvpx-vp9,['-crf', '30', '-cpu-used', '-2'],19.7931578159,32.54317,571
libvpx-vp9,['-crf', '30', '-cpu-used', '0'],176.587754965,32.69899,564
libvpx-vp9,['-crf', '30', '-cpu-used', '2'],19.8394429684,32.54317,571

比特率非常低,PSNR似乎不受crf设置的影响(与x264相比非常低)。-cpu-used设置的影响非常小,而且似乎-2和2是相同的选择。我遗漏了什么?我希望libvpx需要更多的时间来编码(这是绝对正确的),但同时也需要更高质量的代码。我应该使用哪些参数与x264进行公平的比较?

编辑:,感谢@mulvya和这个文档,我认为要在crf模式下使用libvpx,我必须添加-b:v 0。我重新做了测试,我得到:

代码语言:javascript
复制
    codec     , settings                                 , time        , PSNR     ,bitrate
libvpx-vp9,['-crf', '20', '-b:v', '0', '-cpu-used', '-2'],57.6835780144,45.111158,17908
libvpx-vp9,['-crf', '20', '-b:v', '0', '-cpu-used', '0'] ,401.360313892,45.285367,17431
libvpx-vp9,['-crf', '20', '-b:v', '0', '-cpu-used', '2'] ,57.4941239357,45.111158,17908
libvpx-vp9,['-crf', '30', '-b:v', '0', '-cpu-used', '-2'],49.175855875,42.588178,11085
libvpx-vp9,['-crf', '30', '-b:v', '0', '-cpu-used', '0'] ,347.158324957,42.782194,10935
libvpx-vp9,['-crf', '30', '-b:v', '0', '-cpu-used', '2'] ,49.1892938614,42.588178,11085

添加-b:v 0后,PSNR和比特率显著提高。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-18 19:20:51

-speed的负值意味着截止日期,但在接近零的速度设置下,这没有任何影响.为了获得更快的编码速度,请使用远离零的-speed值(例如4或6)。您也可以考虑使用线程。

不推荐使用-quality,不应该使用它(根据代码注释)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40114089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档