我使用此代码将 gif 添加到视频中:
(base) E:\>ffmpeg -i tt102e.mp4 -ignore_loop 0 -i e:\gals\flags\RoyaumeUni.gif -filter_complex "[1:v][0:v]scale2ref=oh*mdar:ih/5[ua][b];[ua]setsar=1,format=yuva
420p,colorchannelmixer=aa=0.75[u];[b][u]overlay" -shortest -c:a copy -y tt102e-.mp4
这有效,但最后一秒,甚至大约 1.5 被冻结 - gif 和视频停止 - 只有声音播放到最后。但是,如果我更改为
mkv
格式,它会以其他方式进行 - 整个视频和音频削减 1.5 秒 - 它更短。当我使用 mts
格式时它没问题,但质量很低,因为这会产生 12 位视频,而不是 24 位。但是如果我添加 -vcodec libx264 -b:v 4000k
以获得 24 位并且比默认比特率更好它又是错误的 - 作为 mp4案件。到底是怎么回事??是使用不同编解码器的情况吗? Gif 是 24 位的,具有未知的 fps,bgra 格式。这里有什么东西吗?
编辑
好吧,很快就找到了问题......有些SO答案实际上并不准确,所以我错误地使用了
-shortest
。它应该在overlay=shortest=1
.