Handbrake使用x264编码器进行视频转换。该站点概述了所有x264选项及其对应的FFmpeg。但是,这些选项已过时,其中某些选项不再起作用或可能已重命名。您应该将x264配置文件用于大多数详细信息选项,但我们会到达那里。
许多基本的Handbrake选项(例如帧速率)并非特定于x264,它们分散在FFmpeg在线文档中。
在开始之前,请检查您是否使用了最新的FFmpeg版本。他们的下载站点具有适用于所有主要操作系统的静态版本。
我们走吧:
--input "d:\input.mpg" --output "d:\output.mp4"
FFmpeg语法为ffmpeg -i input.mpg … d:\output.mp4
。
--rate 29.97
用指定视频帧速率-r 29.97
。(手刹--cfr
只是设置一个恒定的帧速率。此处不需要)。
--arate 44.1
用-ar 44100
(以Hz为单位)设置音频采样率。
--format mp4
不需要,因为FFmpeg知道您想要MP4。
--width 1920 --height 1080 --custom-anamorphic --display-width 1920 --keep-display-aspect --modulus 8 --crop 0:0:0:0
除了将尺寸设置为1920×1080外,此操作无济于事。在FFmpeg中,使用进行操作-s:v 1920x1080
,或者如果要使用过滤器,则进行操作-filter:v "scale=1920:1080"
。
--encoder x264 --vb 5200
用设置编码器,用设置-c:v libx264
比特率恒定-b:v 5200K
。请注意,关于质量设置,我们还不存在。
--aencoder faac --ab 128 --mixdown stereo
与上述类似,使用-c:a libfaac -b:a 128K -ac 2
。请注意,FFmpeg不再支持FAAC。而是使用内置的FFmpeg编码器-c:a aac -b:a 128K
代替。
-x bitrate=5200:vbv-bufsize=5200:vbv-maxrate=5200
这就将编码模式设置为VBV,它针对流方案,而不仅仅是恒定的比特率或恒定的质量。恒定质量也称为CRF,它是x264的默认值–在“手刹”中称为“比率因子”。虽然CRF通常为您提供最佳质量的编码,但VBV模式为您提供了更适合在线流传输或功能有限的某些设备的文件。
要设置VBV,请使用ffmpeg中的-maxrate 5200K
和-bufsize 5200K
选项。
要设置CRF,请-crf 23
在ffmpeg中使用。
level=42
使用-level 42
。这是H.264级别。
bframes=2:min-keyint=60:keyint=60:ref=4
用设置B帧的数量-bf 2
。最小关键帧间隔设置为-keyint_min 60
,最大间隔设置为-g 60
。参考图片的数量用设置-refs 4
。
me=umh:merange=64:subme=7:8x8dct:cabac=1
您可以在ffmpeg中另外设置这些选项,-x264-params me=umh:merange=64:subme=7:8x8dct:cabac=1
例如,其他任何未直接映射到ffmpeg选项的x264编码器设置。
如果您懒惰,不关心细节或工作不正常,请使用以下“ TL; DR”版本:使用-preset:v medium
(或忽略它,因为默认设置是中型)。x264预设选择了一组选项,这些选项将编码速度与压缩效率进行了权衡。他们方便地从命名ultrafast
,superfast
,veryfast
,faster
,fast
,medium
来slow
,slower
和veryslow
。选择您认为合适的任何东西。
因此,总结一下,长版:
ffmpeg -i input.mpg -c:v libx264 -r 29.97 -s:v 1920x1080 -b:v 5200K -maxrate 5200K -bufsize 5200K -level 42 -bf 2 -keyint_min 60 -g 60 -refs 4 -x264-params me=umh:merange=64:subme=7:8x8dct:cabac=1 -c:a aac -b:a 128K -ar 44100 d:\output.mp4
或我要使用的简短代码(删除了VBV编码并删除了一些详细信息选项):
ffmpeg -i input.mpg -c:v libx264 -r 29.97 -s:v 1920x1080 -b:v 5200K -maxrate 5200K -bufsize 5200K -c:a aac -b:a 128K -ar 44100 d:\output.mp4
更改为恒定质量编码以进行通用转换,请使用此-crf
参数并将参数从18 更改为28,其中较低的值表示较好的质量,默认值为23:
ffmpeg -i input.mpg -c:v libx264 -r 29.97 -s:v 1920x1080 -crf 23 -c:a aac -b:a 128K -ar 44100 d:\output.mp4