这是我的代码,它将图像添加到通过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
但视频分辨率不同:
和这个
如何防止图像缩小/放大?
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
这工作得很好,但它不会保持徽标的长宽比。我在两个不同分辨率的视频上试过这个代码,这就是结果
和这个
有没有可能改进这个解决方案?
写回答关注邀请回答
提问于 2018-04-28
1 个回答
用户回答回答于 2018-04-28
ffmpeg -i input.mp4 -i logo.png -filter_complex "[1:v][0:v]scale2ref=(W/H)*ih/8/sar:ih/8[wm][base];[base][wm]overlay=10:10" -pix_fmt yuv420p -c:a copy output.mp4
这将调整标志的高度到视频高度的1/8。