karl-police Asked: 2019-06-17 06:28:55 +0800 CST2019-06-17 06:28:55 +0800 CST 2019-06-17 06:28:55 +0800 CST 60 FPS GIF 真的存在吗?或者是最大 50 FPS? 772 我最近一直在玩 FFmpeg,我试图转换.avi为,.gif因为到目前为止我尝试过的其他方法效果不佳。 我注意到的是,当我使用这个命令时: ffmpeg -I filename.gif 我可以看到一些文件信息,包括 FPS。 我看到为了让您转换成 gif 的视频不会变慢,可能的最高 FPS 是 50 FPS。 现在是正确的吗?GIF 中可以拥有的最高 FPS 数量,这样它就不会变慢 50 FPS 吗? 那么 60 FPS GIF 不存在吗? ffmpeg gif 2 个回答 Voted Best Answer dirkt 2019-06-17T06:59:39+08:002019-06-17T06:59:39+08:00 GIF98a规范在有关图形控制扩展的部分中说 vii) 延迟时间——如果不为 0,则此字段指定在继续处理数据流之前要等待的百分之一 (1/100) 秒数。图形呈现后时钟立即开始滴答作响。该字段可以与用户输入标志字段结合使用。 这意味着对于 100 FPS 的图像速率,最小值为 1(这将很难在大多数显示器上呈现...),对于 50 FPS 的图像速率,下一个最小值为 2,下一个值为 3图像速率为 33.3 FPS。所以精确的 60 FPS 是不可能的。 请注意,此扩展适用于少数具有秒级延迟的帧(最大延迟约为 600 秒),因此 1/100 秒分辨率已足够。它当然不适合视频,这就是为什么场编码延迟,而不是帧速率。 制作视频 GIF 确实是对规范的滥用(尽管它现在如此普遍以至于大多数人可能没有意识到这一点,就像大多数人没有意识到 GIF 和 JPEG 使用不同类型的压缩一样在不同类型的图像上)。 Gyan 2019-06-17T12:11:57+08:002019-06-17T12:11:57+08:00 使用 ffmpeg,这是模拟 60 fps 滚动平均值的基本格式 ffmpeg -i video.mp4 -vf "settb=1/100,setpts='if(eq(N,0),0,if(not(mod(N,3)),PREV_OUTPTS+1,PREV_OUTPTS+2))'" -vsync vfr -r 100 out.gif 要使用 ffmpeg 读取这些文件,同时保留这些时间,请使用 ffmpeg -min_delay 1 -i out.gif ... 这将显示 Stream #0:0: Video: gif, bgra, 1280x720 [SAR 64:64 DAR 16:9], 60 fps, 100 tbr, 100 tbn, 100 tbc 任何给定的玩家是否满足这些时间安排是另一回事。
GIF98a规范在有关图形控制扩展的部分中说
这意味着对于 100 FPS 的图像速率,最小值为 1(这将很难在大多数显示器上呈现...),对于 50 FPS 的图像速率,下一个最小值为 2,下一个值为 3图像速率为 33.3 FPS。所以精确的 60 FPS 是不可能的。
请注意,此扩展适用于少数具有秒级延迟的帧(最大延迟约为 600 秒),因此 1/100 秒分辨率已足够。它当然不适合视频,这就是为什么场编码延迟,而不是帧速率。
制作视频 GIF 确实是对规范的滥用(尽管它现在如此普遍以至于大多数人可能没有意识到这一点,就像大多数人没有意识到 GIF 和 JPEG 使用不同类型的压缩一样在不同类型的图像上)。
使用 ffmpeg,这是模拟 60 fps 滚动平均值的基本格式
要使用 ffmpeg 读取这些文件,同时保留这些时间,请使用
这将显示
任何给定的玩家是否满足这些时间安排是另一回事。