本文主要是介绍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
这篇关于iOS仿抖音小视频播放遇到的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!