I make two low-latency hls streams to play on safari native player. The only difference is EXT-X-TARGETDURATION:

"First fine stream" with EXT-X-TARGETDURATION = EXTINF = 6sec;

"Second bad stream" with EXT-X-TARGETDURATION = 8sec, EXTINF = 6sec;

First stream plays fine on safari native player, while the second stream only download m3u8 and partial segments but cannot play at all.

I don't know what's the problem for the "second bad stream" which lead to the playing issue on safari native player, does anyone have an idea?

Thanks in advance!

The following is sbr m3u8 content for the "second bad stream". (while #EXT-X-TARGETDURATION:6 is ok)

#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

From the Spec HLS draft, it says: "The EXT-X-TARGETDURATION tag specifies the maximum Media Segment duration." It seems that the "second bad stream" is also meet the requirements of HLS.

I tried to verify the stream by streamvalidator tool, but it only report the peak bitrate error, which is also exists in the "first fine stream".

I tried normal hls streams(non low-latency hls) on safari native player, the streams play fine. It seems that normal stream does't care about if "#EXT-X-TARGETDURATION" is equal with "#EXTINF"

0

There are 0 best solutions below