我的后端提供了实时流(m3u8),并向其附加了一些块。
播放列表在后端的外观:
从第一秒开始:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:YES
#EXT-X-PLAYLIST-TYPE:EVENT
#EXT-X-TARGETDURATION:38
#EXTINF:37.995,
https://example.com/0.mp3
从5秒开始:
...
#EXTINF:30.531,
https://example.com/1.mp3
从10秒开始:
...
#EXTINF:41.811,
https://example.com/2.mp3
#EXT-X-ENDLIST
TARGETDURATION
的持续时间也最终改变了。
这种方法在Safari中绝对有效。对于其他浏览器,我使用hls.js库,它也运行良好。
但是在iOS应用中,AVPlayer从第一个块之后的开头开始播放流。
它看起来像这样:
Safari和其他浏览器在获得更新后才继续播放。而且我希望在iOS应用中具有相同的行为。
如果播放列表结尾,则AVPlayer会正确播放它。但就我而言,立即提供完整的播放列表而不进行更新会花费太多时间。