如何使用带有 VAAPI 的 ffmpeg 编码为 HEVC 以获得良好的视频质量?(在合理的比特率下)

如何使用带有 VAAPI 的 ffmpeg 编码为 HEVC 以获得良好的视频质量?(在合理的比特率下)

我想将我的许多 H264 视频编码为 H265 视频,并降低分辨率(在本例中为 480p 或类似值,最多为 720p),这样它们就不会占用太多磁盘空间。

我一直在尝试将英特尔 CPU 的 VAAPI 硬件加速与hevc_vaapi编解码器一起使用,因为软件中的 H265 编码仍然很慢(在较慢的 CPU 上),到目前为止它可以工作,但编码后的视频看起来比源视频差很多,或者它比原始视频占用更多的空间,或者两者兼而有之。

有谁成功实现了良好的质量正如您所期望的 HEVC 视频一样,比特率合理吗?

在我的示例中,这当然应该低于 H264 源,否则重新编码没有任何意义。H264 视频主要使用 1 - 1.5 Mbit/s - 所以我的目标是 480p 的 HEVC 低于 1Mbit/s,这样可以输出大约libx265500 kbit/s 的良好视觉质量-crf 26(或类似,当然取决于源 - 但软件编码相当慢)

除了使用恒定比特率模式之外,编解码器的最佳选择hevc_vaapi似乎是使用-qp 25(或类似的值),但这只会使它稍微好一点,但看起来仍然不太好......

我已经阅读并尝试了 ffmpeg wiki 中有关 VAAPI 的命令(尽管它们都使用 CBR 模式),但这并没有太大帮助,因为它们使用非常高的比特率,而这并不是 HEVC 的真正目的(https://trac.ffmpeg.org/wiki/Hardware/VAAPI)。

有谁知道这个问题的解决方案 - 或者可能遇到了同样的问题?!

使用 VAAPI 时是否有可能以合理的比特率获得良好的质量?

我也会考虑其他可能性来加快速度,但目前我只有这个支持 VAAPI 的慢速 CPU(qsv 不起作用,如果有更好的效果的话)。

答案1

以不需要太多存储空间的方式对大型视频文件进行编码是一个非常常见的问题。根据内容和实际原始文件,在文件大小和质量之间找到一个良好的平衡点可能相当困难。

一个选择是Don Melton 的 VideoTranscodingTools。这些是为翻录的 DVD 和蓝光的硬件加速转码而设计的,但它们也可以用于其他媒体文件,例如用摄像机或手机拍摄的视频。GitHub 上有积极的支持,出现的问题大多会在几天内得到开发人员的答复。

值得一提的是,Don Melton 制作的工具集在核心上利用了 FFmpeg,也就是说,最终,您的视频文件将传递给 FFmpeg 可执行文件,并带有十几个您自己永远不会选择的参数。

它的工作原理是检测输入文件的质量(比特率、分辨率和一些其他参数的质量),然后在此基础上决定如何对输出进行编码,以确保最大程度的可移植性,同时缩小文件大小并保留尽可能多的原始信息,以保留最佳图像。

此外,它还会自动检测您在哪种硬件上运行该工具并选择适当的硬件加速方法。

个人经验:我的笔记本电脑比较旧,配备了 2017 年推出的 i5 处理器,我认为它需要大约 15 分钟来处理从 DVD 翻录的整部 1.5 小时的电影,并且不会造成任何视觉损失,同时将输入从大约 6 GB 压缩到大约 1.5 GB。

相关内容