a demo for convert video to gif format
在ScrollView中同时播放多个视频是一个颇为麻烦的事情。 现有一个需求,用户使用如gif的表情动画或称sticker,在会话列表中会同时播放多个可能是几十个动画。最初我们选择了gif格式,但是gif本身文件比较大,几秒的动画动辄2,3MB以上, 会给用户带来大量的下载流量负担,此外,gif格式还存在画质差等缺点。
后来我们决定改用mp4格式,同样的动画,mp4格式文件是207kb,而gif是3.6MB,相差接近18倍。 但是在开发过程中却遭遇到不小的坑。首先我们参考了Telegram开源的播放器,在使用过程在发现存在crash,内存泄漏,播放卡住等问题。修改无果后,我们使用系统的AVPlayer,虽然同样存在很多问题,如最多同时播放16个视频,还会占用AVAudioSession,但至少不会crash。
然而这显然不是理想方案,如果直接播放视频,自己实现一个高性能低功耗的视频解码器是必须的,折腾了一番后,还是遇到诸如Telegram播放器中播放卡住,性能消耗大等问题。此事终须慢慢来。。。
由于产品的催促,没有太多的时间折腾视频播放器,最终我想到了一个折中的方案,下载mp4格式,然后画质无损转化为帧率较低的gif格式,以gif格式播放给用户。性能消耗小,节省用户流量,但是会稍微多占些本地磁盘空间。
这便是本项目的由来!
本项目参考了相关代码,致谢相关作者!