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

[SmartTVs] frozen frames / rebufferings in live and no playback after a few minutes #4586

Open
5 tasks done
testeur-990 opened this issue Oct 4, 2024 · 1 comment
Open
5 tasks done

Comments

@testeur-990
Copy link

testeur-990 commented Oct 4, 2024

Environment
  • Dash.js version:last version
  • Browser name/version:SmartTVs
Observed behavior

After a few minutes, the player freezes, and there is no playback for live streaming. We have observed that the player fails to find the necessary segments for audio and video, resulting in 'segment not found' errors in the logs.

Console output

[706794][BufferController][audio] Buffered range: 1727963527.184665 - 1727963549.947332, currentTime = 1727963547.181
" [706798][BufferController][audio] Buffered range: 1727963554.043332 - 1727963558.011332, currentTime = 1727963547.181
" [706801][BufferController][audio] Buffered range: 1727963560.059332 - 1727963993.979332, currentTime = 1727963547.181
" [706805][StreamProcessor][audio] Appended bytes for audio and stream id 8947157786443
" [706835][ScheduleController][audio] Media segment needed for audio and stream id 8947157786443
" [706838][DashHandler][audio] audio No segment found at index: 11. Wait for next loop
" [707195][StreamProcessor][video] OnFragmentLoadingCompleted for stream id 8947157786443 and media type video - Url: URL
" [707237][BufferController][video] Buffered range: 1727963527.861999 - 1727963549.861999, currentTime = 1727963547.181
" [707242][BufferController][video] Buffered range: 1727963553.861999 - 1727963555.861999, currentTime = 1727963547.181
" [707246][BufferController][video] Buffered range: 1727963577.861999 - 1727963993.861999, currentTime = 1727963547.181
" [707252][StreamProcessor][video] Appended bytes for video and stream id 8947157786443
" [707278][ScheduleController][video] Media segment needed for video and stream id 8947157786443
" [707285][DashHandler][video] video No segment found at index: 11. Wait for next loop
" [707358][ScheduleController][audio] Media segment needed for audio and stream id 8947157786443
" [707362][DashHandler][audio] audio No segment found at index: 11. Wait for next loop
" [709396][ScheduleController][video] Media segment needed for video and stream id 8947157786443
" [709399][DashHandler][video] video No segment found at index: 11. Wait for next loop
" [709411][ScheduleController][audio] Media segment needed for audio and stream id 8947157786443
" [709415][DashHandler][audio] audio No segment found at index: 11. Wait for next loop
" [709912][ScheduleController][video] Media segment needed for video and stream id 8947157786443
" [709916][DashHandler][video] video No segment found at index: 11. Wait for next loop
" [709938][ScheduleController][audio] Media segment needed for audio and stream id 8947157786443
" [709941][DashHandler][audio] audio No segment found at index: 11. Wait for next loop
" [710437][ScheduleController][video] Media segment needed for video and stream id 8947157786443
" [710441][DashHandler][video] video No segment found at index: 11. Wait for next loop
" [710477][ScheduleController][audio] Media segment needed for audio and stream id 8947157786443
" [710480][DashHandler][audio] audio No segment found at index: 11. Wait for next loop
" [710977][ScheduleController][video] Media segment needed for video and stream id 8947157786443
" [710979][DashHandler][video] video No segment found at index: 11. Wait for next loop
" [711004][ScheduleController][audio] Media segment needed for audio and stream id 8947157786443
" [711012][DashHandler][audio] audio No segment found at index: 11. Wait for next loop
" [711493][ScheduleController][video] Media segment needed for video and stream id 8947157786443
" [711496][DashHandler][video] video No segment found at index: 11. Wait for next loop
" [711521][ScheduleController][audio] Media segment needed for audio and stream id 8947157786443
" [711527][DashHandler][audio] audio No segment found at index: 11. Wait for next loop

Expected behavior

The player should continue to play the stream without freezing, and all necessary audio and video segments should be available for playback at all times.

P.S.: At the moment, we can't share the URL of the stream because it's encrypted, but we will try to find a clear live stream that we can share with you. However, we have observed the following in the MPD:
timeShiftBufferDepth="PT22.000S"
minBufferTime="PT3.000S"
minimumUpdatePeriod="PT6.000S"



(We can share any other parameters that will help you analyze this issue.)

We are unsure if this is an issue with our streams or with the way you retrieve the last segment in the following function:
function getSegmentByIndex(representation, index, lastSegmentTime) {
checkConfig();

    if (!representation) {
        return null;
    }

    let segment = null;
    let found = false;

    iterateSegments(representation, function (time, base, list, frag, fTimescale, relativeIdx, i) {
        if (found || lastSegmentTime < 0) {
            let media = base.media;
            let mediaRange = frag.mediaRange;

            if (list) {
                media = list[i].media || '';
                mediaRange = list[i].mediaRange;
            }

            segment = getTimeBasedSegment(
                timelineConverter,
                isDynamic,
                representation,
                time,
                frag.d,
                fTimescale,
                media,
                mediaRange,
                relativeIdx,
                frag.tManifest);

            return true;
        } else if (time >= (lastSegmentTime * fTimescale) - (frag.d * 0.5)) { // same logic, if deviation is
            // 50% of segment duration, segment is found if time is greater than or equal to (startTime of previous segment - half of the previous segment duration)
            found = true;
        }

        return false;
    });

    return segment;
} in TimelineSegmentsGetter.js
@testeur-990 testeur-990 added the Bug label Oct 4, 2024
@dsilhavy
Copy link
Collaborator

Thanks for reporting this. We don't have the resources to debug such SmartTV issues at this point. Please try to identify the issue yourself and provide a PR. If a specific workaround is needed, it can be hidden behind a settings flag.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants