コマンドラインでアニメーションgifをmp4またはmv4に変換するにはどうすればよいですか?


79

mp4またはmv4ビデオファイルをアニメーションGIFに、またはその逆に変換するには、どのコマンドを使用しますか。つまり、アニメーションgifをmp4またはmv4に変換します。

回答:


108

ここに私のために働いたものがあります:

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


4
おかげで、これはosxで私のために働いた唯一のバージョンです。
ピクラー

1
これは、トップの答えはしなかったのffmpeg 3.0.2、とUbuntuの16.10で私のために働いた

1
同様に(置き換えスケーリングするのではなく、トリミングもscaleしてcropあなただけのほとんどの1つのピクセルで切断することになるだろうと、)。スケーリングは物事をぼやけさせるかもしれません
-Jezzamon

これは私にとって最後の数秒をカットしました。結果のmp4は早く終了しました。
コールム

38

私の場合、ffmpeg直接使用することでトリックが行われ、最良の結果が得られました。

$ ffmpeg -f gif -i infile.gif outfile.mp4

2
OS Xで空白の(破損した)ビデオを作成
Pykler

2
@Pyklerでは、おそらく冗長性を高めるか、ログファイルをチェックして、何が起こっているかを理解する必要があります。
BenC

私も、おそらくvico Vaultの答えで提案された「2次元で割り切れる」。(それは私のために働いた)
-lapo

この方法は私にとって完璧に機能しました。(一番上の答えにより、3秒が終了しました。)編集:ああ、iOSでは再生されません:(
callum

Webページは、あなただけの-pix_fmt YUV420Pを追加する必要がありますと言う
beefeather

2

GIFアニメーションをビデオに変換する別の方法:

ffmpeg -i your_gif.gif -c:v libvpx -crf 12 -b:v 500K output.mp4

-crf値は4〜63の範囲で指定できます。値が小さいほど品質が向上します。-b:vは最大許容ビットレートです。高いほど品質が高くなります。


2

「nループ」で出力する場合は、このソリューションを一発で見てください

だから、normal.gifloop.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コマンドを実行すると、誤って上書きしたくない可能性がはるかに少なくなります。(おそらく、ビデオをそれ自体にパイプする方法もあり、これを中間ファイルと上書きなしでパイプされた1つのコマンドで実行します。) -yffmpeg
FeRD

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.