HLS m3u8文件更新规则

HLS m3u8文件更新规则


#EXTM3U

#EXT-X-VERSION:3

#EXT-X-MEDIA-SEQUENCE:2

#EXT-X-TARGETDURATION:10

#EXTINF:10,

cctv1hd-227601.ts

#EXTINF:10,

cctv1hd-227602.ts

#EXTINF:10,

cctv1hd-227603.ts


注意:

live m3u8更新规则

live m3u8文件列表需要不断更新,更新规则:

移除一个文件播放列表中靠前的(认为已播放的)文件

不断更新EXT-X-MEDIA-SEQUENCE标签,以步长为1进行递增

在更新M3U8时一定要注意要确保”每个.ts信息和播放时长”在更新前后要保持一致(否则会导致播放器播放出错并停止播放)。

播放器在播放完一个.ts文件后会向服务器再次发送请求m3u8文件的请求。

更新服务器的播放请求要在一个.ts文件播放完成前进行更新。

这里的更新 可以直接将原m3u8文件删除再创建一个新的m3u8文件。

:在第一次更新中#EXTINF信息为:

#EXTM3U

#EXT-X-VERSION:3

#EXT-X-MEDIA-SEQUENCE:1

#EXT-X-TARGETDURATION:10

#EXTINF:5,

cctv1hd-227600.ts

#EXTINF:10, //注意此处时长为10

cctv1hd-227601.ts

#EXTINF:10,

cctv1hd-227602.ts

但是在第二次更新M3U8文件的时候一不小心将文件写为:

#EXTM3U

#EXT-X-VERSION:3

#EXT-X-MEDIA-SEQUENCE:1

#EXT-X-TARGETDURATION:10

#EXTINF:5,

cctv1hd-227600.ts

#EXTINF:11, //注意此处时长为11上一次更新时长为10 前后更新m3u8文件时同一个.ts文件时长不同会导致播放器出现播放错误。

cctv1hd-227601.ts

#EXTINF:10,

cctv1hd-227602.ts


当遇到上面的m3u8文件更新不正确时 播放器报的错误如下:

注意:当遇到上面的类似错误时 AVPlayerViewController 不会报出错误信息但是会停止播放,MPMoviePlayerController会报出错误信息

建议在调试时使用MPMoviePlayerController调试在遇到错误时能知道错误信息。

2017-07-21 18:29:29.023244+0800 test_m3u8_download_01[5820:317943] [Playback] ❗️Playback failed with error: (null), not resolving (canResolve: YES, errorResolver: (null))

2017-07-21 18:29:29.023 test_m3u8_download_01[5820:317943] 停止播放.

2017-07-21 18:29:29.024 test_m3u8_download_01[5820:317943] 停止播放.

2017-07-21 18:29:29.026 test_m3u8_download_01[5820:317943] 未知状态

2017-07-21 18:29:29.028467+0800 test_m3u8_download_01[5820:317943] [Playback] ❗️Failed to queue any items.

2017-07-21 18:29:29.041 test_m3u8_download_01[5820:317943] errorLog is (null)

2017-07-21 18:29:29.041 test_m3u8_download_01[5820:317943] events is (null)

2017-07-21 18:29:29.041 test_m3u8_download_01[5820:317943] --------------------<<<<<<<<<<<<<<<<<

2017-07-21 18:29:29.042117+0800 test_m3u8_download_01[5820:317943] [Playback] ❗️Failed to queue any items.

你可能感兴趣的:(直播流)