使用ffmpeg将视频从1080p转换为720p且质量损失最小


45

我叠放了高质量的电影:1080p和60fps。麻烦是演奏时滞后。

我试图用ffmpeg将其转换为720p:

ffmpeg -i MyMovie.mkv -r 60 -s hd720 MyMovie_720p.mkv

但是由于比特率从32.3 Mbps降低到2.8 Mbps,所以质量损失很大。如何为视频流指定正确的比特率,而将所有其他流复制为原始格式?

输入文件mediainfo:

ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : High@L4.2
Format settings, CABAC                   : Yes
Format settings, ReFrames                : 4 frames
Codec ID                                 : V_MPEG4/ISO/AVC
Duration                                 : 2h 58mn
Bit rate                                 : 32.3 Mbps
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Frame rate                               : 59.940 fps
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.260
Stream size                              : 40.2 GiB (92%)
Writing library                          : x264 core 116 r2019 9cc407d
Encoding settings                        : cabac=1 / ref=4 / deblock=1:-2:-1 / analyse=0x3:0x113 / me=umh / subme=10 / psy=1 / psy_rd=0.80:0.20 / mixed_ref=1 / me_range=32 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=0 / chroma_qp_offset=-3 / threads=6 / sliced_threads=0 / nr=0 / decimate=0 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=6 / b_pyramid=2 / b_adapt=2 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=60 / rc=crf / mbtree=0 / crf=14.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / vbv_maxrate=50000 / vbv_bufsize=62500 / crf_max=0.0 / nal_hrd=none / ip_ratio=1.40 / pb_ratio=1.30 / aq=1:0.60
Language                                 : English
Default                                  : Yes
Forced                                   : No
Matrix coefficients 

                 : BT.709-5, BT.1361, IEC 61966-2-4 709, SMPTE RP177

Answers:


93

这是一个示例,应该为您提供最高质量的视频(我不是在谈论最终的文件大小)。请注意,该视频可能无法在所有设备或播放器上播放:

ffmpeg -i MyMovie.mkv -vf scale=-1:720 -c:v libx264 -crf 0 -preset veryslow -c:a copy MyMovie_720p.mkv

要获得“视觉上无损”的质量,可以使用:

ffmpeg -i MyMovie.mkv -vf scale=-1:720 -c:v libx264 -crf 18 -preset veryslow -c:a copy MyMovie_720p.mkv

现在让我们看看这里有什么:

视频缩放过滤器是用于调整视频。您只需设置一个尺寸(在此示例中为高度),然后将其-1用于另一尺寸即可。ffmpeg将在保留宽高比的同时自动重新计算正确的值。

通过以下-crf选项控制质量:

量化标度的范围是0-51:其中0为无损,默认为23,最坏可能为51。较低的值表示较高的质量,主观的合理范围是18-28。认为18在视觉上是无损的或几乎是无损的:它看起来应该与输入相同或几乎相同,但从技术上讲并不是无损的。

范围是指数的,因此将CRF值增加+6大约是比特率的一半,而-6大约是比特率的两倍。通常的用法是选择仍可提供可接受质量的最高CRF值。如果输出看起来不错,则尝试较高的值,如果输出看起来不好,则选择较低的值。

您可以在x264编码指南中找到更多信息。

您可以使用这些-preset选项在视频编码速度和压缩效率之间进行权衡。那些是超快,超快,非常快,更快,更快,中等,慢,慢,非常慢。默认为。该veryslow选择提供了最佳的压缩效率(导致对相同的质量较小的文件大小),但它是非常缓慢的-正如其名字。

音频将直接从输入文件流复制到输出文件,而无需进行任何更改。


2
LordNeckbeard-感谢您的编辑。我没有足够的时间来键入所有详细信息
Nikola Dimitrijevic 2014年

1
您的示例是将高度设置为720而不是宽度。
chovy


2
要也以mkv复制字幕而不进行转换,可以添加-scodec copy
卡斯珀

2
我想,让720P您必须设置宽度为1280,即不 -vf scale=-1:720但是-vf scale=1280:-1
cdlvcdlv

0

如果您希望以其他大小缩放,则FFMPEG缩放尺寸会有一些限制。它不接受每个高度,这是一小列关于尺寸的最佳建议。

当以像素为单位的宽度和高度是16的倍数时,视频编解码器的性能会更好。虽然您可以在编码设置中使用任何宽度和高度,但非最佳尺寸会导致图像质量下降和帧频降低。为了获得最佳的图像质量和播放效果,您应该为视频使用16的倍数的宽度和高度尺寸;您的下一个最佳选择是8的倍数,然后是4的倍数。

Recommended width and height for videos with 16:9 aspect ratios:

Best Choice:     2nd Best:        3rd Best:
Multiples of 16  Multiples of 8   Multiples of 4
1920 x 1080      1792 x 1008      1856 x 1044
1280 x 720       1152 x 648       1216 x 684
1024 x 576        896 x 504       1088 x 612
 768 x 432        640 x 360        960 x 540
 512 x 288        384 x 216        832 x 468
 256 x 144        128 x 72         704 x 396
                                   576 x 324
                                   448 x 252
                                   320 x 180
                                   192 x 108
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.