使用 ffmpeg 将音频和 Gif 合并成视频,同时保留透明度

使用 ffmpeg 将音频和 Gif 合并成视频,同时保留透明度

我正在尝试结合音频文件和一个动态图变成视频尽管我尝试了 Stack Overflow 上的很多解决方案,但仍然遇到了一些问题。

我希望合并后的文件的持续时间与音频的持续时间相匹配,并且保留 GIF 透明度。

  • 音频文件时长为00:00:17.53
  • Gif 文件长度为00:00:00.40,它是透明的。

我设法将它们结合起来,但是我得到的持续时间完全错误,并且使用以下命令会丢失透明度:

ffmpeg -i input.mp3 -ignore_loop 0 \
-i input.gif -movflags +faststart \
-vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" \
-shortest -strict -2 \
-c:v libx264 -c:a aac -b:a 192k -b:v 2M -pix_fmt yuv420p output.mp4

生成的视频的时长为00:00:24.21

  1. 有没有办法可以在不使用选项的情况下获得正确的输出持续时间-t 00:00:17.53
  2. 我尝试使用其他编解码器(例如 libvpx-vp9)进行转换,但无法获得正确的透明度,是否还有其他我必须使用的编解码器?

编辑:我设法使用以下命令生成透明视频(webm 格式):

ffmpeg -i source.mp3 -ignore_loop 0 -i source.gif -c:v libvpx -pix_fmt yuva420p -auto-alt-ref 0 -t 00:00:17.53

然而,我关于持续时间不能自动正确的第一个疑问仍然存在。

相关内容