linux 修改视频帧率,将动画gif转换为linux服务器上的视频,同时保留帧速率

@H_502_1@如何在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暂停,……)

>由于输入来自用户,它甚至可能会有所不同,因为一些GIF可能有5fps而其他的是30fps

我注意到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持续时间,循环)

>我错过了什么?什么出错了?

>这个用例可能有更好的工具吗?

>什么是大型网站,例如9gag用于将上传的GIF转码为视频?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值