Answers:
这对我有用:
ffmpeg -i animated.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" video.mp4
movflags –此选项优化了MP4文件的结构,以便浏览器可以尽快加载它。
pix_fmt – MP4视频以不同格式存储像素。我们包括此选项以指定一种特定格式,该格式在所有浏览器中具有最大的兼容性。
vf –使用H.264的MP4视频的尺寸必须可被2整除。此选项可确保确实如此。
资料来源:http : //rigor.com/blog/2015/12/optimizing-animated-gifs-with-html5-video
scale
用crop
),因为你只打算最多1个像素被切断。缩放可能会使事情变得模糊
就我而言,ffmpeg
直接使用就可以了,并提供了最佳结果:
$ ffmpeg -f gif -i infile.gif outfile.mp4
如果要在“ n个循环”中进行输出,请一次性查看此解决方案
因此,让我们将normal.gif转换为loop.mp4
对于2个循环的影片示例:
ffmpeg -stream_loop 2 -i normal.gif loop.gif -y;ffmpeg -i loop.gif -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" loop.mp4 -y
5个循环的电影示例:
ffmpeg -stream_loop 5 -i normal.gif loop.gif -y;ffmpeg -i loop.gif -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" loop.mp4 -y
注意:有-y [用于覆盖]
ffmpeg
命令,则意外覆盖掉您不想要的内容的可能性会大大降低。(也可能有一种方法可以将视频传递到自身中,并通过一个 -y
ffmpeg
MacOs版本如下:
$ ffmpeg -i input.avi -pix_fmt yuv420p output.mp4