Start a new topic

Bypass segments not available

We are using the player in an environment where not all chunks are available in the DASH or HLS server and some time the player will get error 404. Today when this happens the player stop playing for a while and after it could not play properly. 

For example the player request segments vide100.ts it gets error 404 from the server and the player stop playing even if it can get video101.ts etc... without issue. 

I think that this happen in particular when audio and video are in 2 separate segments. 

Is there a way to make the player to smoothly resync ? 

when we get 404 error if we stop and restart the player it can restart properly but we are looking for a more robust way to manage it. 


Hello,


Can you share a test stream in order to simulate the issue?

In case the chunk is not available and the stream is VoD the player must retry to download it "forever" and will not try to skip it. When the stream is Live, the player must try to download the chunk couple of times and if the chunk is not available to skip it and continue with the next chunk described by manifest.



The stream we are using is a live stream that is distributed on multicast using LTE-B. it would not be easy to provide you a reference stream. 

In order to simulate it we have a Dash encoder that is generating the segments and we are removing some of them randomly. 


We are playing Live stream, it is not VoD. the MPD file we are using is: 

<MPD type="dynamic" minimumUpdatePeriod="PT2S" timeShiftBufferDepth="PT600S" minBufferTime="PT2S" profiles="urn:mpeg:dash:profile:isoff-live:2011" publishTime="2018-06-03T07:14:35Z" availabilityStartTime="2018-06-03T07:14:35Z"><Period id="1" start="PT0S"><AdaptationSet mimeType="video/mp4" segmentAlignment="true" startWithSAP="1" maxWidth="854" maxHeight="480" maxFrameRate="25" par="16:9"><SegmentTemplate presentationTimeOffset="0" timescale="10000000" duration="20000000" startNumber="41724018" media="dash_video-$Number$_$Bandwidth$bps.mp4" initialization="dash_video_$Bandwidth$bps-init.mp4">

      </SegmentTemplate><Representation id="0" codecs="avc1.4d401e" width="854" height="480" scanType="progressive" frameRate="25" sar="1280:1281" bandwidth="800000"/></AdaptationSet><AdaptationSet mimeType="audio/mp4" codecs="mp4a.40.5" audioSamplingRate="48000" lang="eng" segmentAlignment="true" startWithSAP="1"><AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/><Role schemeIdUri="urn:mpeg:dash:role:2011" value="main"/><SegmentTemplate presentationTimeOffset="0" timescale="10000000" duration="20000000" startNumber="41724018" media="dash_audio-$Number$_$Bandwidth$bps_Input_$RepresentationID$.mp4" initialization="dash_audio_$Bandwidth$bps_Input_$RepresentationID$-init.mp4">

      </SegmentTemplate><Representation id="1" bandwidth="96000"/></AdaptationSet></Period></MPD>


The reception of the segment is done over multicast and there is 1% of the segments that will be missed due to bad reception condition. 



This is the warning messages we get are: 


09:31:02] [vb] Warning(MultiChannelManager.cc:776): [mcm] Transfer failed. Switching to lowest quality: 800000viblast.js:119:100
[09:31:02] [vb] Warning(DashPeer.cc:446): [DashPeer 0] Cannot download chunk id=83449021. Server responded with 404viblast.js:119:100
[09:31:04] [vb] Warning(MultiChannelManager.cc:776): [mcm] Transfer failed. Switching to lowest quality: 800000viblast.js:119:100
[09:31:04] [vb] Warning(DashPeer.cc:446): [DashPeer 0] Cannot download chunk id=83449021. Server responded with 404viblast.js:119:100
[09:31:06] [vb] Warning(AudioDownloader.cc:126): Cannot find matching audio segments for 1 video segmentsviblast.js:119:100
[09:31:06] [vb] Warning(MultiChannelManager.cc:776): [mcm] Transfer failed. Switching to lowest quality: 800000viblast.js:119:100
[09:31:06] [vb] Warning(DashPeer.cc:446): [DashPeer 0] Cannot download chunk id=83449021. Server responded with 404viblast.js:119:100
[09:31:08] [vb] Warning(AudioDownloader.cc:126): Cannot find matching audio segments for 1 video segmentsviblast.js:119:100
[09:31:08] [vb] Warning(MultiChannelManager.cc:776): [mcm] Transfer failed. Switching to lowest quality: 800000viblast.js:119:100
[09:31:08] [vb] Warning(DashPeer.cc:446): [DashPeer 0] Cannot download chunk id=83449021. Server responded with 404viblast.js:119:100
[09:31:10] [vb] Warning(AudioDownloader.cc:126): Cannot find matching audio segments for 1 video segmentsviblast.js:119:100
[09:31:10] [vb] Warning(MultiChannelManager.cc:776): [mcm] Transfer failed. Switching to lowest quality: 800000viblast.js:119:100
[09:31:10] [vb] Warning(DashPeer.cc:446): [DashPeer 0] Cannot download chunk id=83449021. Server responded with 404viblast.js:119:100
[09:31:12] [vb] Warning(AudioDownloader.cc:126): Cannot find matching audio segments for 1 video segmentsviblast.js:119:100
[09:31:12] [vb] Warning(ChannelManager.cc:429): [cm 0x525330] We are too far behind or infront. Forcefully moving the window to position= 83449022 previous abi= 83449021 distance=-1 moveThresholdInfront= 5 moveThresholdBehind= 1viblast.js:119:100
[09:31:12] [vb] Error(MediaSourcePlayer.cc:511): [MSP] Discontinuity hole 8.3449e+07viblast.js:119:100
requested current time: 83449024viblast.js:182:309
Buffers start: 168894.150968 buffers end: 168896.12viblast.js:182:387
[09:31:12] [vb] Error(MediaSourcePlayer.cc:531): [MSP] Couldn't set currentTime to 8.3449e+07viblast.js:119:100
requested current time: 83449024viblast.js:182:309
Buffers start: 168894.150968 buffers end: 168896.12viblast.js:182:387
Buffers start: 168898.12 buffers end: 168900.12viblast.js:182:387
[09:31:12] [vb] Error(MediaSourcePlayer.cc:531): [MSP] Couldn't set currentTime to 8.3449e+07viblast.js:119:100
[09:31:12] [vb] Error(MediaSourcePlayer.cc:511): [MSP] Discontinuity hole 8.3449e+07

Hello,


Thank you for the shared information.

From the log it seems that the player does not handle the discontinuity hole if the timestamp is not presented in the template.

We will try to reproduce and fix the issue with our test env.





Login to post a comment