为啥这个 gif 似乎有 0 毫秒的持续时间?我怎样才能找到真正的持续时间?

Posted

技术标签:

【中文标题】为啥这个 gif 似乎有 0 毫秒的持续时间?我怎样才能找到真正的持续时间?【英文标题】:Why does this gif seem to have a 0ms duration? How can I find the true duration?为什么这个 gif 似乎有 0 毫秒的持续时间?我怎样才能找到真正的持续时间? 【发布时间】:2014-03-14 12:02:49 【问题描述】:

我正在尝试从动画 gif 文件中获取持续时间和帧数,以便计算 gif 的平均帧率,然后将其转换为视频。

我最近在测试期间遇到了这张图片,它似乎让所有人都相信它的持续时间为 0 毫秒。

为什么?我怎样才能找到真正的持续时间?

到目前为止我已经尝试过:

exiftool

exiftool -v image.gif

ImageMagick

identify -verbose -format "Frame %s: %Tcs\n" image.gif

This Python script 使用 Python 映像库

还有一些其他用于动画 gif 的程序,例如 Microsoft Gif Animator

【问题讨论】:

【参考方案1】:

这个 GIF 动画的实际持续时间真的是零秒。它有 41 帧,每帧的帧持续时间为零。 (它也有一个格式错误的 XMP 记录,但这在这里无关紧要。)

无限帧率显然是非常愚蠢的,您的浏览器甚至没有理由费心尝试显示它。实际上发生的情况是,您的浏览器会减慢此类 GIF 动画的帧速率,以便它们实际上可以合理地显示,而不会占用您的处理器或让您癫痫发作。

没有特定的标准行为,但通常每帧帧延迟小于 0.05 或 0.06 秒的任何 GIF 都可能被网络浏览器拖慢。

参考资料:

http://blogs.msdn.com/b/ieinternals/archive/2010/06/08/animated-gifs-slow-down-to-under-20-frames-per-second.aspx

http://forums.mozillazine.org/viewtopic.php?t=108528

【讨论】:

优秀。然后我想为了让视频看起来“正确”(与它在浏览器中出现的基本相同),典型的行为是默认为 10fps。谢谢!

以上是关于为啥这个 gif 似乎有 0 毫秒的持续时间?我怎样才能找到真正的持续时间?的主要内容,如果未能解决你的问题,请参考以下文章

地理位置手表不会持续触发

为啥我在 paintComponent 中的 gif 动画不起作用?

为啥我的 AVURLAsset 没有持续时间?

哈希表的性能,为啥C++最慢?

以毫秒为单位获取时间来分析函数持续时间

过渡和不透明度不能很好地协同工作