当前位置:主页 > 文章技巧
ffmpeg与H264编码 使用技巧
日期:2017-05-30 浏览量:

x264是一个 H.264/MPEG4 AVC 编码器,本指南将指导新手如何创建高质量的H.264视频。

对于普通用户通常有两种码率控制模式:crf(Constant Rate Factor)和Two pass ABR。码率控制是一种决定为每一个视频帧分配多少比特数的方法,它将决定文件的大小和质量的分配。

如果你在编译和安装libx264 方面需要帮助,请查看ffmpeg和x264编译指南:

crf(Constant Rate Factor)

该方法在输出文件的大小不太重要的时候,可以使整个文件达到特定的视频质量。该编码模式在单遍编码模式下提供了最大的压缩效率,每一帧可以按照要求的视频质量去获取它需要的比特数。不好的一面是,你不能获取一个特定大小的视频文件,或者说将输出位率控制在特定的大小上。

1 选择一个CRF值

量化比例的范围为0~51,其中0为无损模式,23为缺省值,51可能是最差的。该数字越小,图像质量越好。从主观上讲,18~28是一个合理的范围。18往往被认为从视觉上看是无损的,它的输出视频质量和输入视频一模一样或者说相差无几。但从技术的角度来讲,它依然是有损压缩。

若Crf值加6,输出码率大概减少一半;若Crf值减6,输出码率翻倍。通常是在保证可接受视频质量的前提下选择一个最大的Crf值,如果输出视频质量很好,那就尝试一个更大的值,如果看起来很糟,那就尝试一个小一点值。

注释:本文所提到的量化比例只适用于8-bitx264(10-bit x264的量化比例 为0~63),你可以使用x264 –help命令在Output bit depth选项查看输出位深,在各种版本中,8bit是最常见的。

2 选择一个预设

预设是一系列参数的集合,这个集合能够在编码速度和压缩率之间做出一个权衡。一个编码速度稍慢的预设会提供更高的压缩效率(压缩效率是以文件大小来衡量的)。这就是说,假如你想得到一个指定大小的文件或者采用恒定比特率编码模式,你可以采用一个较慢的预设来获得更好的质量。同样的,对于恒定质量编码模式,你可以通过选择一个较慢的预设轻松地节省比特率。

如果你很有耐心,通常的建议是使用最慢的预设。目前所有的预设按照编码速度降序排列为: ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslow,placebo

缺省预设为medium,请忽略 placebo因为它是毫无用处的(参看下面的问答)。你可以使用–preset来查看预设列表,也可以通过x264 –fullhelp来查看预设所采用的参数配置。

你可以基于输入内容的独特性通过使用–tune来改变参数设置。当前的 tune包括:film,animation,grain,stillimage,psnr,ssim,fastdecode,zerolantency。假如你的压制内容是动画,你可以使用animation,或者你想保留纹理,那就是用grain。如果你不确定使用哪个选项或者说你的输入与所有的tune皆不匹配,你可以忽略–tune 选项。你可以使用–tune来查看tune列表,也可以通过x264 –fullhelp来查看tune所采用的参数配置。

另外一个可选的参数是–profile,它可以将你的输出限制到一个特定的 H.264 profile,该选项可以被忽略除非你的播放设备只支持某种profile。当的所有profile 包括:baseline,main.high,high10,high422,high444 。注意使用–profile选项和无损编码是不兼容的。

如下所示,作为一种快捷方式,你可以通过不声明 preset和tune得内容来为ffmpeg罗列所有可能的内部preset和tune。

ffmpeg -i input -c:v libx264 -preset -tune dummy.mp4

3 使用你的预设

一旦你选择了一个预设,请把它应用到你的剩余的尚未编码的视频,这样可以确保它们有同样的视频质量。

CRF例子:

接下来将使用x264编码一个视频,使用一个比普通预设稍慢的预设,这样可以得到比默认设置稍好一点的视频质量。

ffmpeg -i input -c:v libx264 -preset slow -crf 22-c:a copy output.mkv

注意在这个例子中,输入文件的音频流被简单地拷贝到输出,并没有重编码。

两遍模式:

如果你的目标是一个确定大小的文件而且帧与帧之间的视频质量并不重要,这个方法很适用。这通过一个例子可以得到很好地解释。你的视频有10分钟(600秒)的时长同时要求输出为50MB,因为比特率=文件大小/时长,

50MB*8192(MB转kilobits)/600秒=683 kbps(全局比特率)

,683kbps-128kbps(音频比特率)=555kbps(视频比特率),

两边编码的例子:

ffmpeg -y -i input -c:v libx264 -preset medium -b:v 555k -pass 1 -an -f mp4 /dev/null &&

ffmpeg -i input -c:v libx264 -preset medium -b:v 555k -pass 2 -c:a libfdkaac -b:a 128k mp4 output.mp4

注意 windows 用户应该使用NUL来取代/dev/null

当使用CRF时,请选择使用你所能容忍的最慢预设。

相关文章:
·水果别买PLU编码8开头的 买进口食品这些技巧要掌
·怎样导出高清视频 Xvid编码设置教程
·Win10卸载软件Skype错误代码2503的解决技巧
·调查显示美国半数高薪工作需要拥有的一种技能
·对建设项目投资项(或者成本项)信息进行编码
→ 特别推荐
水果别买PLU编码8开头
怎样导出高清视频
Win10卸载软件Skype错误
调查显示美国半数高
对建设项目投资项(
Docker社区核心成员D
《智能电视娱乐操控
栅格结构数据获取的
Css技巧:模块化编码
探秘最强大脑速成法
逆回购操作方法与技
矢量数据结构的编码
ffmpeg与H264编码 使用技
MYSQL数据库设计的一些
详解VB.NET动态编码技
→ 热点TOP10
[技巧]神秘代码
黑客技巧--深入
拉菲最新防伪
《纽约时报》
免费QQ空间五级
孙杨200米自由
观点有关硕士
总结ERP之供应
[技巧] 如何在
基于TMS320DM37

友情链接/网站合作咨询: