哪些H.264 / H.265视频压缩参数可提供与DVD相当的质量并具有更好的压缩效果?


11

我有一盒DVD视盘,希望将它们转换为MP4文件以将其存储在硬盘上,以保留这些视频。

考虑到现代H.264 AVC和H.265 HEVC压缩算法相对于DVD标准MPEG2的优越性,我希望通过压缩视频来节省硬盘空间,同时节省约99%的DVD原始质量。

什么

  • H.264(FFMPEG + libx264)压缩参数
  • H.265(FFMPEG + libx265)压缩参数

我应该使用它来实现自己的目标吗?

参数是指CBR / CRF值,预设值(请不要非常慢/安慰剂),标志等。

PS:我希望通过使用来限制这种情况,-pix_fmt yuv420p-profile:v baseline -level 3.0确保文件在所有设备上都能正常播放,包括依靠旧硬件解码器芯片的旧设备。使用I帧的频率略有增加(使用该-g参数),也有利于低速和高延迟媒体的使用。

对于HEVC,我也更喜欢使用可以确保在支持该功能的设备上平稳进行硬件加速播放的参数,但我并不是要关注此约束,因为我还没有看到任何提供硬件加速H.265的设备。完全没有解码。

Answers:


14

请注意,为此,您应始终使用最新的ffmpeg版本,最好自己编译。这使您可以访问最新的libx265和libfdk-aac进行音频编码。

此外,如果您将DVD速度从〜10 MBit / s降低到H.264视频的1-2 MBit / s和H.265视频的0.5–1 MBit / s,那么节省的数据速率将是相当大的。在以下步骤中更改质量可能会影响比特率,但是数据减少仍然很重要。

H.264

对于质量/速率控制,您想在libx264中使用CRF模式,而不要使用恒定的比特率。使用CRF可确保保留平均质量,而与原始视频分辨率或其复杂性无关。只有当您受到传输介质(例如硬盘速度,Internet吞吐量)的限制时,恒定比特率才真正有用。

选择CRF值是棘手的部分。它要求您查看输出。libx264的默认值(23)在大小和质量之间提供了很好的权衡。但考虑到原始源已经被压缩(而不是一个非常好的质量相比蓝光射线),你可能要改变CRF要低一点,如20,这将增加所需的比特率约三分之一。

根据您要等待的时间选择预设。slow在这里似乎很有价值。

ffmpeg -i input \
-c:v libx264 -crf 20 -pix_fmt yuv420p \
-x264-params keyint=240:min-keyint=20 \
-preset:v slow -profile:v baseline -level 3.0 \
-c:a libfdk_aac -vbr 4 \
output.mp4

如果libfdk-aac不可用,则可以使用内置的ffmpeg AAC编码器。使用-c:a aac -strict experimental -b:a 128k代替-c:a libfdk_aac -vbr 4

H.265

研究表明,与H.264相比,使用HEVC最多可节省74%的比特率。这是基于Ultra-HD序列的主观观看数据。当然,这取决于源内容的时间复杂性,对于难以编码的序列,保存的数据量不会那么高。无论哪种方式,您都可以放心地说,绝对有可能减少50%的数据。

libx265的默认CRF为28。使用相同的源内容,与CRF 23上的libx264相比,它产生的比特率约为一半。这与实际的比特率无关,即,如果H.264版本占用1.5 MBit / s,那么H.265将使用大约750 kBit / s,但是它是750 kBit / s,而另一个序列是350 kBit / s。我以DVD-PAL分辨率在几个序列上运行它,但无法分辨出质量上的差异。

ffmpeg -i input \
-c:v libx265 -pix_fmt yuv420p \
-x265-params crf=28:keyint=240:min-keyint=20 \
-preset:v slow \
-c:a libfdk_aac -vbr 4 \
output.mp4

有关更多信息,请参见以下相关资源:


谢谢您的答复。keyint实际上是什么意思?
伊万2014年

1
keyintx264 / x265中的in是IDR帧之间的间隔,即解码器可以刷新的关键帧之间的间隔。在这两者之间,可以存在非关键帧I帧,例如在发生场景切换时。-g如果我没记错的话,它等效于参数。
slhck

顺便说一句,@ slhck,这让我的回答感到惊讶-您对选择AAC编码库的关注。我曾经认为它们几乎相同,几乎没有差异,音频部分很简单(只需选择比特率即可,所有主要的有损编解码器(例如MP3,AAC和Vorbis)都几乎或完全听起来在128 kbps或更高速率下相同)。您是说libfdk-aac与普通aac确实有显着区别吗?
伊万2014年

1
@Ivan Zeranoe构建绝对应该允许您-c:a aac -strict experimental按照我的回答进行操作。我同意,我不会尝试在Windows上构建它。
slhck

2
@Ivan(第一个评论):参见ffmpeg-wiki:“基于从高到低产生的质量:libopus > libvorbis >= libfdk_aac > aac > libmp3lame >= libfaac >= eac3/ac3 > libtwolame > vorbis > mp2 > wmav2/wmav1仅适用于AAC :(由于有点混乱,有3种编码器可用):libfdk_aac > aac > libfaac> =符号表示更大或相同质量。”
Golar Ramblar '16
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.