私は最近FFmpegをいじって、変換しようとしていました.avi
から.gif
私がこれまで試みてきた他の方法がうまく機能しなかったため。
私が気づいたのは、このコマンドを使用すると、
ffmpeg -I filename.gif
FPSを含むファイル情報の一部が表示されます。
そして、GIFに変換するビデオが遅くならないように可能な最大のFPSは50 FPSであることがわかりました。
でも今は正しいですか? GIFに含めることができる最大のFPS量は、遅くなる50 FPSにならないようにするためですか?
60 FPS GIFは存在しないのですか?
GIF98a仕様 は、Graphics Control Extensionに関するセクションで述べています
vii)遅延時間-0でない場合、このフィールドは、データストリームの処理を続行する前に待機する100分の1秒(1/100)の秒数を指定します。グラフィックがレンダリングされた直後に、時計がカチカチと音を立て始めます。このフィールドは、ユーザー入力フラグフィールドと組み合わせて使用できます。
つまり、画像レートが100 FPSの場合、最小値は1であり(これはほとんどのモニターではレンダリングが困難です...)、画像レートが50 FPSの場合、次に小さい値は2であり、次の値は3です。 33.3 FPSの画像レートの場合。したがって、正確に60 FPSは不可能です。
この拡張は、秒単位の遅延(最大遅延は約600秒)を持つ少数のフレーム用であるため、1/100秒の解像度で十分です。これは確かにビデオ用ではありません。そのため、フィールドはフレームレートではなく遅延をエンコードします。
ビデオGIFの作成は実際には仕様の乱用です(現在では一般的であるため、ほとんどの人はGIFとJPEGがさまざまな種類の圧縮を使用していることを認識していないのと同じように、それを認識していないため、別の種類の画像)。
Ffmpegを使用すると、これは60 fpsのローリング平均をエミュレートするための基本的な形式です
ffmpeg -i video.mp4 -vf "settb=1/100,setpts='if(eq(N,0),0,if(not(mod(N,3)),PREV_OUTPTS+1,PREV_OUTPTS+2))'" -vsync vfr -r 100 out.gif
これらのタイミングを維持しながらffmpegでこれらのファイルを読み取るには、次のコマンドを使用します。
ffmpeg -min_delay 1 -i out.gif ...
表示されます
Stream #0:0: Video: gif, bgra, 1280x720 [SAR 64:64 DAR 16:9], 60 fps, 100 tbr, 100 tbn, 100 tbc
特定のプレイヤーがこれらのタイミングを満たしているかどうかは別の問題です。