【问题标题】:How to improve the output video quality with ffmpeg and h264_videotoolbox flag?如何使用 ffmpeg 和 h264_videotoolbox 标志提高输出视频质量?
【发布时间】:2020-08-18 02:11:16
【问题描述】:

目前我正在使用此命令进行转换

ffmpeg -i <srcfile> -vcodec libx264 -profile:v main -level 3.1 -preset slower -crf 18 -x264-params ref=4 -acodec copy -movflags +faststart <outfile>

转换一些行车记录仪镜头以在 iOS 设备上查看。

在 2017 年的 Macbookpro 和 16G 内存上完成上述命令大约需要 30 分钟。

我想加快速度。我尝试过的一件事是利用计算机中的 GPU。因此我添加了标志-c:v h264_videotoolbox

它加快了很多。我可以在 1 分钟内完成转换。

但是,当我检查输出时,GPU 版本会出现条带和模糊。

这是一个屏幕截图。左侧为 CPU 版本,右侧为 GPU 版本。

为了突出区别,这里是视频的一部分

  1. 倒影中的树木

  1. 波纹铁皮墙

我可以操纵任何开关来使 GPU 版本更清晰吗?

【问题讨论】:

  • This post 建议使用恒定比特率 (-b:v),因为“h264_videotoolbox 不适用于 CRF 值”。您可以尝试使用仅由 CPU 处理的生成视频的比特率。如果结果是质量好的部分和质量差的部分(由于某些场景的复杂性),您可以尝试使用两次编码(尽管它会更慢)。

标签: ffmpeg


【解决方案1】:

与 x264 相比,这是一个简单的 H.264 编码器,因此您不会获得相同的比特率质量。 h264_videotoolbox 针对速度进行了优化,不支持-crf

您可以使用ffmpeg -h encoder=h264_videotoolbox 查看特定于该编码器的一些选项,但因为它们可能已经设置为“自动”(我没有通过源代码确认并且我没有硬件可以尝试)这些其他选项可能没有太大区别。

所以你只需要提高比特率,比如-b:v 8000k

或者继续使用更快的-preset的libx264。

【讨论】:

    【解决方案2】:

    除了 llogan 的 回答之外,我建议将“实时”属性设置为零(这可以提高运动场景的质量)

    【讨论】:

      【解决方案3】:

      正如洛根所说,比特率选项在这种情况下是一个很好的参数。

      ffmpeg -i input.mov -c:v h264_videotoolbox -b:v {bitrate} -c:a aac output.mp4

      如果你想设置 1000kb/s 码率,命令是这样的

      ffmpeg -i input.mov -c:v h264_videotoolbox -b:v 1000k -c:a aac output.mp4

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-06
        • 2011-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多