问题描述
我有一个音频文件和一个 GIF,我想将它们合并为一个视频文件,我已完成以下操作:
将 GIF 转换成视频
循环输出视频 X 次 X = (int) (audioDuration / 1000.0) / gifDuration;
将最终视频与音频合并
FFmpeg 命令:
将 GIF 转换成视频
-f gif -y -i input.gif -c:a copy -c:v libx265 -crf 26 -preset ultrafast -s 1080*1920 -pix_fmt yuv420p -map 0 gif2video.mp4
循环输出视频X次
-y -stream_loop " + X + " -i gif2video.mp4 -c copy looped_output.mp4
将最终视频与音频合并:
-y -i looped_output.mp4 -i audio.mp3 -c:v copy -c:a aac final_output.mp4
上述命令有效,但有时输出视频导出为一个 GIF 帧(无动画)和音频
解决方法
使用单个命令:
ffmpeg -stream_loop -1 -i input.gif -i audio.mp3 -map 0 -map 1:a -c:v libx265 -crf 26 -preset ultrafast -s 1080x1920 -pix_fmt yuv420p -c:a aac -movflags +faststart -shortest output.mp4