私はffmpegを使用しています。 A_COMANDとB_COMANDでフレーム数が異なるのはなぜですか?
A_COMAND:
$ ffmpeg -i ./for_sample.gif -vf mpdecimate,setpts=N/FRAME_RATE/TB ./tmp/%1d.png
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
ありがとう。
入力には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.