![使用 ffmpeg 将音频和 Gif 合并成视频,同时保留透明度](https://linux22.com/image/1611576/%E4%BD%BF%E7%94%A8%20ffmpeg%20%E5%B0%86%E9%9F%B3%E9%A2%91%E5%92%8C%20Gif%20%E5%90%88%E5%B9%B6%E6%88%90%E8%A7%86%E9%A2%91%EF%BC%8C%E5%90%8C%E6%97%B6%E4%BF%9D%E7%95%99%E9%80%8F%E6%98%8E%E5%BA%A6.png)
我正在尝试结合音频文件和一个动态图变成视频尽管我尝试了 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
- 有没有办法可以在不使用选项的情况下获得正确的输出持续时间
-t 00:00:17.53
? - 我尝试使用其他编解码器(例如 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
然而,我关于持续时间不能自动正确的第一个疑问仍然存在。