问题
我想把一部长片转换成动画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。
这有可能吗?
发布于 2014-11-09 11:11:56
据我所知,目前avconv中没有“停止此文件大小”选项。当然,它可以很快地被黑客攻击,但是目前libav项目并不能快速破解,所以它很可能会首先出现在ffmpeg中。
除此之外,您还面临一个问题,即动画gif是一种非常老的格式,因此会做一些非常奇怪的事情。让我解释一下它通常的工作方式:
第三步是在动画gif中完成的唯一时间压缩,没有它,文件大小就会大得多(因为每个像素都必须一次又一次地保存)。
但是,如果您不确定最后一次中断是什么时候,则无法确定像素是否与以前的“帧”相同。毕竟,这个特定的帧可以是图像中的第一个。
如果5MiB的限制足够软,允许稍微超过它,您可能可以把一些东西放在一起,只是不断地添加一个帧一个帧,并计算最后的文件大小立即。一旦超过限制,就停止使用下一个帧作为下一个文件的起点。
https://stackoverflow.com/questions/24628412
复制相似问题