这是我用 PHP 运行的添加图像到视频的代码:
exec('ffmpeg -i input.mp4 -i logo.png -filter_complex
"[0:v][1:v] overlay=10:10" -pix_fmt yuv420p -c:a copy output.mp4');
它的功能很好,但问题是图像被缩小或放大,取决于视频分辨率。例如,在以下图片中,标志的宽度为50px
,但视频的分辨率不同:
和这个
我如何防止图像缩小/放大?
更新
感谢Mulvya,他提出了这些代码
ffmpeg -i input.mp4 -i logo.png -filter_complex
"[1:v][0:v]scale2ref=(W/H)*ih/8:ih/8[wm][base];[base][wm]overlay=10:10"
-pix_fmt yuv420p -c:a copy output.mp4
和
ffmpeg -i input.mp4 -i logo.png -filter_complex
"[1:v][0:v]scale2ref=(W/H)*ih/8:ih/8[wm][base];[wm]setsar=1[wmsar];
[base][wmsar]overlay=10:10"
-pix_fmt yuv420p -c:a copy output.mp4
这个方法效果很好,但是它不能保持标志的纵横比。
我在两个分辨率不同的视频上尝试了这段代码,结果如下:
和这个
有没有可能改进这个解决方案?