如何使用ffmpeg和h264_videotoolbox标志提高输出视频的质量?

时间:2020-08-18 02:11:16

标签: ffmpeg

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

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设备中查看。

在具有16G RAM的2017 Macbookpro上,上述命令花费了大约30分钟的时间。

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

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

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

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

enter image description here

为突出区别,以下是视频的各个部分

  1. 树木在倒影

enter image description here

  1. 波纹铁皮墙

enter image description here

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

因此,您只需提高比特率,例如使用-b:v 8000k

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

答案 2 :(得分:0)

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

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

相关问题