Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error 416 in live mode with limited connection speed #4555

Open
5 tasks done
Kalynov opened this issue Aug 22, 2024 · 2 comments
Open
5 tasks done

Error 416 in live mode with limited connection speed #4555

Kalynov opened this issue Aug 22, 2024 · 2 comments
Milestone

Comments

@Kalynov
Copy link
Contributor

Kalynov commented Aug 22, 2024

Environment
Steps to reproduce
  1. Open the Dash.js player in live mode.
  2. In devtools -> network set throttling to 3G or slow 4G or run several players simultaneously to slow down the channel.
  3. wait 5-10 minutes
Observed behavior

A network error appears in the console. error code 416 (Requested Range Not Satisfiable)
the player gives an error and stops playing video and sound.
however, the manifest continues to be constantly requested

Moreover, if you look at the manifest and at the request that throws an error, we can notice that the request specifies an incorrect range (or segment Url)
for Rrepresentation with BaseUrl === 101051/_30__9927111640246786043/20240822/120413.m4v
does not exist range === 1532636-1570522
this range is valid for Representation with baseUrl === 101051/_30__9927111640246786043/20240822/120213.m4v

REQUEST HEADERS

Request URL: https://probe01-qa-ubuntu20.vot/probe_id/4/data/101051/_30__9927111640246786043/20240822/120413.m4v
Request Method: GET
Status Code: 416 Requested Range Not Satisfiable
range: bytes=1532636-1570522

MANIFEST SEGMENTS

<Period id="2024-08-22T12:02:15.086007+00:00" start="PT59.603777S" duration="PT118.80771S">
            <AdaptationSet mimeType="video/mp4" codecs="avc1.42C00D" id="58847325642394" lang="" contentType="video" segmentAlignment="true">
                <Representation width="256" height="144" frameRate="1/1" mimeType="video/mp4" codecs="avc1.42C00D" id="_9927111640246786043" bandwidth="256000">
                    **<BaseURL>101051/_30__9927111640246786043/20240822/120213.m4v</BaseURL>**
                    <SegmentList timescale="16384" presentationTimeOffset="11647110222">
                        <Initialization range="0-789"/>
                       ....
                        <SegmentURL mediaRange="1463410-1498011"/>
                        <SegmentURL mediaRange="1498012-1532635"/>
                        **<SegmentURL mediaRange="1532636-1570522"/>**
                        <SegmentURL mediaRange="1570523-1598683"/>
                        <SegmentURL mediaRange="1598684-1627728"/>
                       .....
                    </SegmentList>
                </Representation>
            </AdaptationSet>
        </Period>
        ......
        <Period id="2024-08-22T12:04:13.893717+00:00" start="PT178.411487S">
            <AdaptationSet mimeType="video/mp4" codecs="avc1.42C00D" id="58847325642394" lang="" contentType="video" segmentAlignment="true">
                <SupplementalProperty schemeIdUri="urn:mpeg:dash:period-continuity:2015" value="2024-08-22T12:02:15.086007+00:00"/>
                <Representation width="256" height="144" frameRate="1/1" mimeType="video/mp4" codecs="avc1.42C00D" id="_9927111640246786043" bandwidth="256000">
                    <BaseURL>101051/_30__9927111640246786043/20240822/120413.m4v</BaseURL>
                    <SegmentList timescale="16384" presentationTimeOffset="11649056768">
                        <Initialization range="0-789"/>
                        <SegmentTimeline>
                            <S t="11649056768" d="32768"/>
                            <S t="11649089536" d="32768"/>
                            <S t="11649122304" d="32768"/>
                            <S t="11649155072" d="32768"/>
                            <S t="11649187840" d="32768"/>
                            <S t="11649220608" d="32768"/>
                            <S t="11649253376" d="32768"/>
                            <S t="11649286144" d="32768"/>
                            <S t="11649318912" d="32768"/>
                            <S t="11649351680" d="32768"/>
                            <S t="11649384448" d="32768"/>
                            <S t="11649417216" d="32768"/>
                            <S t="11649449984" d="32768"/>
                            <S t="11649482752" d="32768"/>
                            <S t="11649515520" d="32768"/>
                            <S t="11649548288" d="32768"/>
                            <S t="11649581056" d="32768"/>
                            <S t="11649613824" d="32768"/>
                        </SegmentTimeline>
                        <SegmentURL mediaRange="790-12492"/>
                        <SegmentURL mediaRange="12493-46306"/>
                        <SegmentURL mediaRange="46307-85784"/>
                        <SegmentURL mediaRange="85785-121297"/>
                        <SegmentURL mediaRange="121298-162754"/>
                        <SegmentURL mediaRange="162755-206148"/>
                        <SegmentURL mediaRange="206149-252184"/>
                        <SegmentURL mediaRange="252185-265922"/>
                        <SegmentURL mediaRange="265923-288043"/>
                        <SegmentURL mediaRange="288044-324228"/>
                        <SegmentURL mediaRange="324229-355125"/>
                        <SegmentURL mediaRange="355126-389725"/>
                        <SegmentURL mediaRange="389726-426862"/>
                        <SegmentURL mediaRange="426863-463948"/>
                        <SegmentURL mediaRange="463949-494801"/>
                        <SegmentURL mediaRange="494802-529595"/>
                        <SegmentURL mediaRange="529596-559969"/>
                        <SegmentURL mediaRange="559970-599820"/>
                    </SegmentList>
                </Representation>
            </AdaptationSet>
        </Period>
Console output
[3149968][StreamProcessor][audio] OnFragmentLoadingCompleted for stream id 2024-08-22T12:02:13.893717+00:00 and media type audio - Url: https://probe01-qa-ubuntu20.vot/probe_id/4/data/101051/_30__9927110540735157832/20240822/120213.m4a , Range:611594-628031 
Debug.js:169 [3149968][AbrController] [audio] switching from throughput to buffer occupancy ABR rule (buffer: 2.255). 
Debug.js:169 [3151252][AbrController] [video] switching from buffer occupancy to throughput ABR rule (buffer: 0.955). 
Debug.js:169 [3151253][AbrController] [audio] switching from buffer occupancy to throughput ABR rule (buffer: 0.973). 
Debug.js:169 [3151979][StreamProcessor][video] OnFragmentLoadingCompleted for stream id 2024-08-22T12:02:13.893717+00:00 and media type video - Url: https://probe01-qa-ubuntu20.vot/probe_id/4/data/101051/_30__9927111640246786043/20240822/120213.m4v , Range:1463410-1498011 
Debug.js:169 [3151980][AbrController] [video] switching from throughput to buffer occupancy ABR rule (buffer: 2.225). 
Debug.js:169 [3152050][StreamProcessor][audio] Buffer is empty! Stalling! 
Debug.js:169 [3152171][PlaybackController] Native video element event: waiting 
Debug.js:169 [3152427][StreamProcessor][audio] OnFragmentLoadingCompleted for stream id 2024-08-22T12:02:13.893717+00:00 and media type audio - Url: https://probe01-qa-ubuntu20.vot/probe_id/4/data/101051/_30__9927110540735157832/20240822/120213.m4a , Range:628032-644490 
Debug.js:169 [3152428][AbrController] [audio] switching from throughput to buffer occupancy ABR rule (buffer: 2.051). 
Debug.js:169 [3153794][DashParser] Parsing complete: ( xml2json: 21.9ms, objectiron: 0.100ms, total: 0.0220s) 
Debug.js:169 [3153795][StreamController] Manifest updated... updating data system wide. 
Debug.js:169 [3153798][ManifestUpdater] Manifest has been refreshed at Thu Aug 22 2024 14:04:55 GMT+0200 (Центральная Европа, летнее время)[1724328295.586]  
Debug.js:169 [3155069][StreamProcessor][video] OnFragmentLoadingCompleted for stream id 2024-08-22T12:02:13.893717+00:00 and media type video - Url: https://probe01-qa-ubuntu20.vot/probe_id/4/data/101051/_30__9927111640246786043/20240822/120213.m4v , Range:1498012-1532635 
Debug.js:169 [3155158][StreamProcessor][audio] OnFragmentLoadingCompleted for stream id 2024-08-22T12:02:13.893717+00:00 and media type audio - Url: https://probe01-qa-ubuntu20.vot/probe_id/4/data/101051/_30__9927110540735157832/20240822/120213.m4a , Range:644491-660885 
Debug.js:169 [3155161][PlaybackController] Native video element event: playing 
XHRLoader.js:102 
        
        
       GET https://probe01-qa-ubuntu20.vot/probe_id/4/data/101051/_30__9927111640246786043/20240822/120413.m4v 416 (Requested Range Not Satisfiable)
        
        
       GET https://probe01-qa-ubuntu20.vot/probe_id/4/data/101051/_30__9927110540735157832/20240822/120413.m4a 416 (Requested Range Not Satisfiable)

Debug.js:169 [3158314][AbrController] [video] switching from buffer occupancy to throughput ABR rule (buffer: 0.868). 
Debug.js:169 [3158315][AbrController] [audio] switching from buffer occupancy to throughput ABR rule (buffer: 0.880). 
Debug.js:169 [3158801][DashParser] Parsing complete: ( xml2json: 8.40ms, objectiron: 0.00ms, total: 0.00840s) 
Debug.js:169 [3158801][StreamController] Manifest updated... updating data system wide. 
Debug.js:169 [3158803][ManifestUpdater] Manifest has been refreshed at Thu Aug 22 2024 14:05:00 GMT+0200 (Центральная Европа, летнее время)[1724328300.592]  
Debug.js:169 [3159112][StreamProcessor][video] Buffer is empty! Stalling! 
Debug.js:169 [3159113][StreamProcessor][audio] Buffer is empty! Stalling! 
Debug.js:169 [3159142][PlaybackController] Native video element event: waiting 
XHRLoader.js:102 
        
GET https://probe01-qa-ubuntu20.vot/probe_id/4/data/101051/_30__9927111640246786043/20240822/120413.m4v 416 (Requested Range Not Satisfiable)        
        
       GET https://probe01-qa-ubuntu20.vot/probe_id/4/data/101051/_30__9927110540735157832/20240822/120413.m4a 416 (Requested Range Not Satisfiable)

Debug.js:169 [3163932][DashParser] Parsing complete: ( xml2json: 9.90ms, objectiron: 0.00ms, total: 0.00990s) 
Debug.js:169 [3163932][StreamController] Manifest updated... updating data system wide. 
Debug.js:169 [3163934][ManifestUpdater] Manifest has been refreshed at Thu Aug 22 2024 14:05:05 GMT+0200 (Центральная Европа, летнее время)[1724328305.723]  
XHRLoader.js:102 
        
        
       GET https://probe01-qa-ubuntu20.vot/probe_id/4/data/101051/_30__9927111640246786043/20240822/120413.m4v 416 (Requested Range Not Satisfiable)
        
       GET https://probe01-qa-ubuntu20.vot/probe_id/4/data/101051/_30__9927110540735157832/20240822/120413.m4a 416 (Requested Range Not Satisfiable)

       GET https://probe01-qa-ubuntu20.vot/probe_id/4/data/101051/_30__9927111640246786043/20240822/120413.m4v 416 (Requested Range Not Satisfiable)

Debug.js:169 [3168875][StreamProcessor][video] OnFragmentLoadingCompleted for stream id 2024-08-22T12:02:13.893717+00:00 and media type video - Url: https://probe01-qa-ubuntu20.vot/probe_id/4/data/101051/_30__9927111640246786043/20240822/120413.m4v , Range:1532636-1570522 
Debug.js:169 [3168875][StreamProcessor][video] Fragment loading completed with an error 
Debug.js:169 [3168877][StreamProcessor][audio] onFragmentLoadingAbandoned request: https://probe01-qa-ubuntu20.vot/probe_id/4/data/101051/_30__9927110540735157832/20240822/120413.m4a has been aborted 
Debug.js:169 [3168878][StreamProcessor][audio] onFragmentLoadingAbandoned request: https://probe01-qa-ubuntu20.vot/probe_id/4/data/101051/_30__9927110540735157832/20240822/120413.m4a has to be downloaded again, origin is not seeking process or switch track call 
XHRLoader.js:102 
        
        
       GET https://probe01-qa-ubuntu20.vot/probe_id/4/data/101051/_30__9927110540735157832/20240822/120413.m4a 416 (Requested Range Not Satisfiable)

Debug.js:169 [3168897][DashParser] Parsing complete: ( xml2json: 16.5ms, objectiron: 0.00ms, total: 0.0165s) 
Debug.js:169 [3168897][StreamController] Manifest updated... updating data system wide. 
Debug.js:169 [3168899][ManifestUpdater] Manifest has been refreshed at Thu Aug 22 2024 14:05:10 GMT+0200 (Центральная Европа, летнее время)[1724328310.688]  
Debug.js:169 [3173951][DashParser] Parsing complete: ( xml2json: 8.20ms, objectiron: 0.00ms, total: 0.00820s) 
Debug.js:169 [3173951][StreamController] Manifest updated... updating data system wide. 
Debug.js:169 [3173953][ManifestUpdater] Manifest has been refreshed at Thu Aug 22 2024 14:05:15 GMT+0200 (Центральная Европа, летнее время)[1724328315.742]  
Debug.js:169 [3178719][DashParser] Parsing complete: ( xml2json: 9.40ms, objectiron: 0.00ms, total: 0.00940s) 
Debug.js:169 [3178719][StreamController] Manifest updated... updating data system wide. 
Debug.js:169 [3178720][ManifestUpdater] Manifest has been refreshed at Thu Aug 22 2024 14:05:20 GMT+0200 (Центральная Европа, летнее время)[1724328320.51]  
Debug.js:169 [3183738][DashParser] Parsing complete: ( xml2json: 11.4ms, objectiron: 0.00ms, total: 0.0114s) 
Debug.js:169 [3183738][StreamController] Manifest updated... updating data system wide. 
Debug.js:169 [3183740][ManifestUpdater] Manifest has been refreshed at Thu Aug 22 2024 14:05:25 GMT+0200 (Центральная Европа, летнее время)[1724328325.529]  
Debug.js:169 [3188801][DashParser] Parsing complete: ( xml2json: 9.20ms, objectiron: 0.00ms, total: 0.00920s) 
Expected behavior

The player must request the correct Range and not stop

@Kalynov Kalynov added the Bug label Aug 22, 2024
@dsilhavy
Copy link
Collaborator

@Kalynov Do you see the same behavior in the latest nightly version: https://reference.dashif.org/dash.js/nightly/samples/dash-if-reference-player/index.html

@dsilhavy dsilhavy added this to the 5.1.0 milestone Sep 23, 2024
@Kalynov
Copy link
Contributor Author

Kalynov commented Sep 24, 2024

@Kalynov Do you see the same behavior in the latest nightly version: https://reference.dashif.org/dash.js/nightly/samples/dash-if-reference-player/index.html

yes i do

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: No status
Development

No branches or pull requests

2 participants