Vic*_*hen 2 http-live-streaming ios avplayer
我有这个 m3u8 文件。#EXT-X-TARGETDURATION为8,第一段#EXTINF为6,当avplayer切换到这个m3u8时,报错如下。
错误域=CoreMediaErrorDomain 代码=-12312 \“媒体输入时间值与 MEDIA-SEQUENCE 477000 的先前播放列表不匹配:8.000000 vs 6.000000\” UserInfo={NSDescription=媒体输入时间值与 MEDIA-SEQUENCE 的先前播放列表不匹配:47700 8.000000 对 6.000000}”
#EXTM3U
#EXT-X-MEDIA-SEQUENCE:477000
#EXT-X-ALLOW-CACHE:NO
#EXT-X-VERSION:2
#EXT-X-FAXS-CM:URI="xxxxxxxx"
#EXT-X-KEY:METHOD=xxxxxxx
#EXT-X-TARGETDURATION:8
#EXTINF:6,
477000.ts
#EXTINF:8,
477001.ts
#EXTINF:8,
477002.ts
#EXTINF:8,
477003.ts
#EXTINF:8,
477004.ts
#EXTINF:8,
477005.ts
#EXTINF:8,
477006.ts
Run Code Online (Sandbox Code Playgroud)
问题是在实时播放列表中,每个片段的#EXT-X-TARGETDURATION 和#EXTINF 是否必须相等?!我找不到来自 Apple 的任何文件来定义此规则。在本文档中,https://developer.apple.com/library/ios/technotes/tn2288/_index.html
Lie Playlist 示例,它们都是相同的。
简短的回答:没有。
无论是直播还是 VOD,EXT-X-TARGETDURATION指定播放列表中片段的最长持续时间。由指定的实际持续时间EXTINF可能会更少。在 HLS 草案 [1] 中,它说:
EXT-X-TARGETDURATION 标签指定最大媒体段持续时间。Playlist 文件中每个 Media Segment 的 EXTINF 持续时间,当四舍五入到最接近的整数时,必须小于或等于目标持续时间;较长的片段可能会触发播放停顿或其他错误。
我阅读错误的方式
Media Entry 时间值与 MEDIA-SEQUENCE 477000 的先前播放列表不匹配:8.000000 与 6.000000
是EXTINF对于序列号为 477000 的特定片段,477000.ts 即在前一个播放列表中为 8.000000,而在刚刚切换到的播放列表中为 6.000000。AFAIK 没有规定要求这些持续时间相等。也许玩家由于某种原因无法处理这个。
您可以使用 Apple 的 MediaStreamValidator [2] 命令行工具测试 HLS 流的一致性。它将显示流可能存在的任何问题。
[1] https://tools.ietf.org/html/draft-pantos-http-live-streaming-19#section-4.3.3.1
[2] https://developer.apple.com/library/ios/technotes/tn2235/_index.html
| 归档时间: |
|
| 查看次数: |
12912 次 |
| 最近记录: |