iOS仿抖音小视频播放遇到的问题

今天从视频文件格式的另外一个角度介绍,MP4文件的box排列顺序是如何影响,在线短视频的播放以及秒播优化的。

  • MP4文件中的所有数据都装在box中 (iso-14496-12/14)

  • (QuickTime中为atom)即mp4是由若干个box组成的

先简单介绍几个重要的box,以便诸位在后续学习时心中有数:

  • 1、 ftyp box,在文件的开始位置,描述的文件的版本、兼容协议等;

  • 2、 moov box,这个box中不包含具体媒体数据,但包含本文件中所有媒体数据的宏观描述信息,moov box下有mvhd和trak box。mvhd中记录了创建时间、修改时间、时间度量标尺、可播放时长等信息。trak中的一系列子box描述了每个媒体轨道的具体信息。

  • 3、 moof box,这个box是视频分片的描述信息。并不是MP4文件必须的部分,但在我们常见的可在线播放的MP4格式文件中(例如Silverlight Smooth Streaming中的ismv文件)确是重中之重。

  • 4、 mdat box,实际媒体数据。我们最终解码播放的数据都在这里面。

  • 5、 mfra box,一般在文件末尾,媒体的索引文件,可通过查询直接定位所需时间点的媒体数据。

刚入职的这家公司 App里面有仿抖音的播放列表使用了第三方的框架 播放器是用自定义的 AVPlayer 测试反馈播放某些视频的时候 不会秒播 而且有些视频画面会卡住 经过我的研究发现 安卓端上传视频有这个问题 导致了 iOS端不能实现 秒播和边下边播

查看了MP4的二进制文件发现 安卓moov在后面 iOS的moov放在前面

查看了 抖音和快手的mp4文件 moov也是放在前面

这样可以实现秒播和顺序播放 响应很快

解决方案:moov前置

要么就安卓端上传的时候moov前置 要么就是服务器来实现这个moov前置

ffmpeg moov 提前命令

ffmpeg -i input.mp4 -y -c copy -f mp4 -movflags faststart output.mp4

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值