将动画gif转换为linux服务器上的视频,同时保留帧速率
如何在linux服务器上以编程方式将动画gif转换为视频(例如h264 @ mp4)?
我需要这个来处理用户生成的内容,这些内容应该作为几种定义的视频格式输出;因此可能,用户可能想要处理动画gif文件.我已经有一套工作的PHP脚本,使用avconv将视频文件转码为特定格式(如vpx @ webm和h264 @ mp4,缩放到特定分辨率),但是我需要视频输入. 通常的方法似乎是提取gif的帧然后编码,就像 convert file.gif file%03d.png avconv -i file%03d.png file.mp4 但这会丢弃帧速率,由gif文件中的暂停信息决定.可以使用-r定义avconv的帧速率,但是 >这不尊重帧之间的暂停,因为它们可以不同(如第一帧100ms暂停,第二帧250ms暂停,第3帧100ms暂停,……) 我注意到avconv能够自己处理GIF,因此可能会尊重正确的暂停,但是当我这样做时(就像在How to convert GIF to Mp4 is it possible?中描述的那样) avconv -i file.gif -r 30 file.mp4 avconv只会占用gif的第一帧,而它至少会检测到文件为视频: Duration: 00:00:00.04,start: 0.000000,bitrate: N/A Stream #0.0: Video: gif,pal8,640x480,25 tbn (例如gif’file.gif’有15帧,每帧有100ms暂停=> 1.5s持续时间,循环) >我错过了什么?什么出错了? 解决方法
然而另一个Avconv Bug(YAAB)
ffmpeg具有更好的GIF解复用支持(和improved GIF encoding).我建议放弃avconv并获得ffmpeg(来自FFmpeg的真实的;不是来自Libav的旧骗子).一个static build很容易,或者你当然可以compile. 例 ffmpeg -i in.gif -c:v libx264 -pix_fmt yuv420p -movflags +faststart out.mp4 有关更多示例,请参见FFmpeg Wiki: H.264 Encoding Guide. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |