首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分割电影,使每个GIF都在一定的文件大小之下。

分割电影,使每个GIF都在一定的文件大小之下。
EN

Stack Overflow用户
提问于 2014-07-08 09:34:00
回答 1查看 432关注 0票数 0

问题

我想把一部长片转换成动画GIF系列。

每个GIF都需要<5MB。

有什么方法可以确定GIF在编码时会有多大?

进展到目前为止

我可以把电影分割成不同的画面:

ffmpeg -i movie.ogv -r 25 frameTemp.%05d.gif

然后,我可以使用convert从ImageMagick创建GIF。但是,在运行命令之前,我无法确定可能的文件大小。

或者,我可以把电影分成几块:

ffmpeg -i movie.ogv -vcodec copy -ss 00:00:00 -t 00:20:00 output1.ogv

但我无法知道,当我将文件convert到GIF时,它是否将低于5MB。

一个10秒的场景有很多动作,可能超过5MB (坏!)静态场景可能在5MB以下(不是问题,但效率不高)。

Ideas

我想我要做的是把整个电影转换成一个GIF,然后找到一种按文件大小来分割它的方法。

看看ImageMagick,我可以将GIF分割成帧,但我没有办法将它分割成一定大小/长度的动画GIF。

这有可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-09 11:11:56

据我所知,目前avconv中没有“停止此文件大小”选项。当然,它可以很快地被黑客攻击,但是目前libav项目并不能快速破解,所以它很可能会首先出现在ffmpeg中。

除此之外,您还面临一个问题,即动画gif是一种非常老的格式,因此会做一些非常奇怪的事情。让我解释一下它通常的工作方式:

  1. 您从开始到最后创建一系列框架,并将它们放在另一个框架上。
  2. 您使所有“未来”框架都不可见,并设置为在特定时间出现。
  3. 为了使文件的大小更小,您可以“在下面”查看新帧,如果前面的像素相同,则将该特定像素设置为不透明的。

第三步是在动画gif中完成的唯一时间压缩,没有它,文件大小就会大得多(因为每个像素都必须一次又一次地保存)。

但是,如果您不确定最后一次中断是什么时候,则无法确定像素是否与以前的“帧”相同。毕竟,这个特定的帧可以是图像中的第一个。

如果5MiB的限制足够软,允许稍微超过它,您可能可以把一些东西放在一起,只是不断地添加一个帧一个帧,并计算最后的文件大小立即。一旦超过限制,就停止使用下一个帧作为下一个文件的起点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24628412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档