ksvc / KSYMediaPlayer_iOS

金山云iOS播放SDK(KSYUN Live Streaming player SDK),支持RTMP HTTP-FLV HLS 协议(supporting RTMP HTTP-FLV HLS protocol),直播延时2-3秒(Living delay 2 or 3 seconds)
http://v.ksyun.com/
Apache License 2.0
563 stars 144 forks source link

播放MP4视频,首帧加载时间较长,并感觉卡顿 #62

Open yaoxc opened 6 years ago

yaoxc commented 6 years ago

测试的视频链接: http://static-wlx.oss-cn-beijing.aliyuncs.com/712dbba6-12fe-4d50-b910-5687c46b85f1.mp4

mayudong1 commented 6 years ago

这个MP4文件结构比较特殊
在ftyp box之后有好几十个mdat box用来存储数据,然后表明音视频编码信息的moov box又在文件最后

常见的mp4文件中只有一个mdat box来存储数据,这样即使moov box在文件尾时,也可以通过mdat box的大小迅速定位到moov box的位置,然后通过新的http请求直接获取moov box数据来解析数音视频的编码格式
但是这个视频因为有很多个mdat box,无法迅速定位到moov box的位置,只能在所有数据全部下载下来之后才能拿到moov box来解析出音视频编码格式,这样因为需要下载大量的数据导致开播慢

暂时在播放端无法解决此问题,可以尝试对这种MP4文件进行一次处理,将moov box放到文件前面的部分就可以正常迅速开播了,或者找视频的生成方,不要生成这种结构的文件

moov前置可以使用一个叫做MP4Box的pc端命令行工具,执行mp4box -inter 10000 test.mp4命令后即可