我使用 shell_exec 在 PHP 中运行以下命令:
ffmpeg -i $sourcePath -vf \"drawtext=text='$txt':fontfile='$fontPath':fontcolor='red':fontsize='40':x=w-mod(max(t-1\,0)*(w+tw)/30\,(w+tw)):y=main_h/2\" -acodec copy $targetPath
它工作正常,但它需要永远。处理一个 3 分钟的视频需要 5 分钟。关于如何提高性能的任何建议?
最佳答案
使用 GPU 解码和编码来加速它。
我的代码适用于 GeForce GTX 视频卡。
ffmpeg
-hwaccel_device 0
-hwaccel cuvid
-c:v h264_cuvid
-i $sourcePath
-vf hwdownload,format=nv12,drawtext=text='$txt':fontfile='$fontPath':fontcolor='red':fontsize='40':x=w-mod(max(t-1\,0)*(w+tw)/30\,(w+tw)):y=main_h/2,hwupload
-acodec copy
$targetPath
关于ffmpeg drawtext 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58244865/