当前我正在使用此命令进行转换
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版本。
为突出区别,以下是视频的各个部分
我可以操纵任何开关来使GPU版本更清晰吗?
答案 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