Gifファイルをffmpegでビデオに変換したい。私が使用しているもの:
ffmpeg -y -i /gif/583fd7661b46d.gif -strict -2 -an -b:v 32M /gif/mp4/583fd7661b46d.avi
フォトショップでの私のgifの長さは27秒ですが、生成されたビデオ「583fd7661b46d.avi」の長さは15秒です。生成されたビデオで同じ期間のgifを取得するにはどうすればよいですか?
あなたのサンプルを使用して、私は問題を特定しました:
GIFでは、最後の(空の)フレームの長さは10370ms
です。 ffmpeg
によって無視されているようで、違いが生じます。
出力フォーマットを.mp4
に変更すると、期間が正しくなります。エンコーダを変更しても効果はありません。
したがって、これはffmpeg
のバグです。この可能性は、出力形式の制限が原因である可能性がありますが、これは非常にまれです(.mkv
にも問題があります)が、その場合、少なくとも警告を出力する必要があります。 バグトラッカー を調べてみると、 #4235(FFmpegを使用してGIFをMP4に変換すると、GIFフレームのタイミングに従わないビデオが生成されます。) -このように見えます.mp4
形式では修正されましたが、他の形式では修正されていません。
あなたの場合、分数original time / achieved time
に等しい係数でプレゼンテーションタイムスタンプフィルターを適用するだけです-27/15
。したがって、出力ファイル名の前にフィルター-filter:v "setpts=27/15*PTS"
を追加します。
FFmpeg wikiでのフレームレートの変更の詳細: https://trac.ffmpeg.org/wiki/How%20to%20speed%20up%20/%20slow%20down%20a%20video