利用命令行通过libx264编码YUV序列

来源:互联网 发布:淘宝宾卡达手表怎么样 编辑:程序博客网 时间:2024/05/22 14:06

先给出在命令行需要输入的命令:

ffmpeg -s cif -i E:\foreman_cif\foreman_cif.yuv -vcodec libx264 -level 40 -profile baseline -me_method epzs -qp 23 -i_qfactor 1.0  -g 12 -refs 1 -frames 50 -r 25 output.264


参数说明:

-s 指定YUV序列的分辨率,此处为cif(352*288)。

-i 指定输入的YUV的绝对路径。

-vcodec 指定编码器。

-profile 指定编码器使用的profile,可以是baseline,main等。此处设置为baseline,所以编码后的视频只包含I帧和P帧。

-level 指定编码器使用的level,这是设置为40对应level 4.0。

-me_method epzs 指定运动估计使用的搜索算法为EPZS(默认)。其他支持的搜索算法可以通过下面命令查找。

ffmpeg -h full | find /i "motion estimation"

-qp 设定恒定QP编码中,QP的值,范围是(from -1 to INT_MAX)。注意,这里的qp指定的是P帧的QP,而I帧和B帧的QP会进一步通过-i_qfactor 和-b_qfactor 推算。此外,在H264标准中是没有帧的概念的,但是在部分编码过程中将一整帧作为一个Slice不使用Slice group,则可以等同的理解为一帧。

-i_qfactor 为了使视频的所有帧(I帧和P帧)

-g 设置GOP大小。通过JM解码可以看到I帧实际上是IDR帧,具体为什么默认插入IDR帧以及如何取消IDR帧还不了解。

-refs 指定参考帧的数目,H.264支持多帧参考,其默认值为1。

-frames 指定需要编码的帧数。

-r 指定编码帧率。


小技巧:

当ffmpeg配置好libx264之后,可以通过 ffmpeg -h full 查询所有的帮助信息,然而想要在全部的帮助中找到想要的信息无意大海捞针。

在Ubuntu系统下,可以通过grep命令查找所需变量名称。 在Windows下面同样可以通过find命令完成,使用方法如下

ffmpeg -h full | find /i "-qp"

其中-i 选项是忽略大小写。




0 0
原创粉丝点击