web-dev-qa-db-ja.com

ffprobeでフレームカウントが異なるのはなぜですか?

質問

私はffmpegを使用しています。 A_COMANDとB_COMANDでフレーム数が異なるのはなぜですか?

sample_gif

A_COMAND:

$ ffmpeg -i ./for_sample.gif -vf mpdecimate,setpts=N/FRAME_RATE/TB ./tmp/%1d.png

抽出することでフォルダ上の80フレームを見ることができます

B_COMMAND:

$ ffprobe -v error -count_frames -select_streams v:0 -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1 ./for_sample.gif
[gif @ 0x7fbb87020a00] Invalid image height.
    Last message repeated 2 times
[gif @ 0x7fbb87020a00] Invalid image width.
85  Last message repeated 54 times

出力で85フレームを見ることができます

実際、このgifサンプルのフレーム数は143です。しかし、重複せずに出力したいので、143カウントにならないことがわかります。

バージョン

ffmpegバージョン4.0.2Copyright(c)2000-2018 Apple LLVMバージョン9.1.0(clang-902.0.39.2)で構築されたFFmpeg開発者

macOS High Sierra 10.13.6

ありがとう。

1
IkShibata

入力には143フレームがありますが、58フレームのパケットヘッダーに無効なメタデータがあるため、デコーダーはこれらを破棄します。それは85フレームを残します。これらにも無効なメタデータがありますが、デコード操作に致命的ではありません。

ffmpeg -i in.gif -f null -を実行すると、次のようなエラーがログに表示されます。

[gif @ 00000000006af400] Invalid top position: 286.
Error while decoding stream #0:0: Invalid data found when processing input
[gif @ 00000000006af400] Invalid top position: 208.
Error while decoding stream #0:0: Invalid data found when processing input
...

致命的でないエラーは次のようになります

[gif @ 00000000006af400] Image too wide by 116, truncating.
[gif @ 00000000006af400] Image too high by 131, truncating.
2
Gyan