web-dev-qa-db-ja.com

GIFをビデオに変換すると、その期間が変わります

Gifファイルをffmpegでビデオに変換したい。私が使用しているもの:

ffmpeg -y -i /gif/583fd7661b46d.gif -strict -2 -an -b:v 32M /gif/mp4/583fd7661b46d.avi

フォトショップでの私のgifの長さは27秒ですが、生成されたビデオ「583fd7661b46d.avi」の長さは15秒です。生成されたビデオで同じ期間のgifを取得するにはどうすればよいですか?

4
Aminesrine

あなたのサンプルを使用して、私は問題を特定しました:

GIFでは、最後の(空の)フレームの長さは10370msです。 ffmpegによって無視されているようで、違いが生じます。

出力フォーマットを.mp4に変更すると、期間が正しくなります。エンコーダを変更しても効果はありません。

したがって、これはffmpegのバグです。この可能性は、出力形式の制限が原因である可能性がありますが、これは非常にまれです(.mkvにも問題があります)が、その場合、少なくとも警告を出力する必要があります。 バグトラッカー を調べてみると、 #4235(FFmpegを使用してGIFをMP4に変換すると、GIFフレームのタイミングに従わないビデオが生成されます。) -このように見えます.mp4形式では修正されましたが、他の形式では修正されていません。

3
ivan_pozdeev

あなたの場合、分数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

0
Pavlus