问题
我使用 ffmpeg。为什么 A_COMAND 和 B_COMAND 之间的帧数不同?
驾驶室管理:
$ ffmpeg -i ./for_sample.gif -vf mpdecimate,setpts=N/FRAME_RATE/TB ./tmp/%1d.png
命令:
$ 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.2 版权所有 (c) 2000-2018 FFmpeg 开发人员使用 Apple LLVM 版本 9.1.0(clang-902.0.39.2)构建
macOS High Sierra 10.13.6
谢谢。
答案1
输入确实有 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.