我制作了两个低延迟 hls 流以在 safari 本地播放器上播放。唯一的区别是 EXT-X-TARGETDURATION: EXT-X-TARGETDURATION = EXTINF = 6sec 的“第一条细流”; “第二个坏流”,EXT-X-TARGETDURATION = 8sec,EXTINF = 6sec; 第一个流在 safari 原生播放器上播放正常,而第二个流仅下载 m3u8 和部分片段但根本无法播放。
我不知道导致 safari 本地播放器播放问题的“第二个坏流”有什么问题,有没有人有想法?
提前致谢!
sbr m3u8 表示“第二个坏流”。 (虽然#EXT-X-TARGETDURATION:6 没问题)
#EXTM3U
#EXT-X-VERSION:9
#EXT-X-SERVER-CONTROL:CAN-BLOCK-RELOAD=YES,HOLD-BACK=24.000000,PART-HOLD-BACK=3.120000,CAN-SKIP-UNTIL=48.000000
#EXT-X-PART-INF:PART-TARGET=1.025000
#EXT-X-TARGETDURATION:8
#EXT-X-DISCONTINUITY-SEQUENCE:0
#EXT-X-MEDIA-SEQUENCE:280690554
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-MAP:URI="test_3000_video-init.mp4"
#EXT-X-SKIP:SKIPPED-SEGMENTS=44
#EXTINF:6.000000,
test_3000_video-280690598.mp4
#EXTINF:6.000000,
test_3000_video-280690599.mp4
#EXT-X-PROGRAM-DATE-TIME:2023-05-15T09:40:02.016Z
#EXTINF:6.000000,
test_3000_video-280690600.mp4
#EXTINF:6.000000,
test_3000_video-280690601.mp4
#EXT-X-PART:DURATION=1.000000,URI="test_3000_video-280690602.part0.mp4",INDEPENDENT=YES
#EXT-X-PART:DURATION=1.000000,URI="test_3000_video-280690602.part1.mp4"
#EXT-X-PART:DURATION=1.000000,URI="test_3000_video-280690602.part2.mp4",INDEPENDENT=YES
#EXT-X-PART:DURATION=1.000000,URI="test_3000_video-280690602.part3.mp4"
#EXT-X-PART:DURATION=1.000000,URI="test_3000_video-280690602.part4.mp4",INDEPENDENT=YES
#EXT-X-PART:DURATION=1.000000,URI="test_3000_video-280690602.part5.mp4"
#EXTINF:6.000000,
test_3000_video-280690602.mp4
#EXT-X-PART:DURATION=1.000000,URI="test_3000_video-280690603.part0.mp4",INDEPENDENT=YES
#EXT-X-PART:DURATION=1.000000,URI="test_3000_video-280690603.part1.mp4"
#EXT-X-PART:DURATION=1.000000,URI="test_3000_video-280690603.part2.mp4",INDEPENDENT=YES
#EXT-X-PART:DURATION=1.000000,URI="test_3000_video-280690603.part3.mp4"
#EXT-X-PART:DURATION=1.000000,URI="test_3000_video-280690603.part4.mp4",INDEPENDENT=YES
#EXT-X-PART:DURATION=1.000000,URI="test_3000_video-280690603.part5.mp4"
#EXTINF:6.000000,
test_3000_video-280690603.mp4
#EXT-X-PART:DURATION=1.000000,URI="test_3000_video-280690604.part0.mp4",INDEPENDENT=YES
#EXT-X-PRELOAD-HINT:TYPE=PART,URI="test_3000_video-280690604.part1.mp4"
#EXT-X-RENDITION-REPORT:URI="../test_1640_video/test_1640_fmp4Video.m3u8",LAST-MSN=280690604,LAST-PART=0
#EXT-X-RENDITION-REPORT:URI="../test_1100_video/test_1100_fmp4Video.m3u8",LAST-MSN=280690604,LAST-PART=0
来自 Spec HLS 草案,它说:“EXT-X-TARGETDURATION 标签指定最大媒体段 duration。” 看来“第二个bad stream”也符合HLS的要求
我尝试用streamvalidator工具验证流,但它只报告峰值比特率错误,这在“第一个fine stream”中也存在。
我在 safari 本地播放器上尝试了正常的 hls 流(非低延迟 hls),流播放正常。似乎普通流不关心“#EXT-X-TARGETDURATION”是否等于“#EXTINF”