我可以使用以下命令将gif文件转换为mp4:
ffmpeg -i animated.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" video.mp4
我想做的是循环gif动画3次并转换为mp4。
我可以使用2个shell命令执行此操作。首先从上面开始,然后将相同的视频连接3次。
ffmpeg -f concat -safe 0 -i <(printf "file '$PWD/video.mp4'\n%.0s" {1..3}) -c copy videoloop.mp4
我也尝试过-ignore_loop 0选项并设置时间。它确实有效,但它不是我想要做的,因为我可以扩展视频,但不能完全做出3个循环。
ffmpeg -ignore_loop 0 -i animated.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" -t 12 videoloop.mp4
因为你可以看到我已经能够实现我想要的东西,但是有2个shell命令:
ffmpeg -i animated.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" video.mp4
ffmpeg -f concat -safe 0 -i <(printf "file '$PWD/video.mp4'\n%.0s" {1..3}) -c copy videoloop.mp4
只用一次ffmpeg调用就可以做到这一点吗?
我尝试使用-loop选项输入文件。它不适用于GIF。我也尝试过-stream_loop。它会造成一些损坏的东西。
答案 0 :(得分:0)
在处理LOOPING时,我分两步将 gif 转换为 mp4
例如GIF ---> LOOP ---> MP4
首先循环播放gif本身。在此示例中,输出将被添加2次重复
[最终文件将播放一次,外加2次重复(循环)]
ffmpeg -stream_loop 2 -i normal.gif loop.gif
将LOOPED GIF转换为mp4
ffmpeg -i loop.gif -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" loop.mp4