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

Freeze/Buffering on dash live multi-period stream for ad insertion #6409

Open
jgbayser opened this issue Apr 5, 2024 · 1 comment
Open
Labels
platform: Tizen Issues affecting Tizen priority: P2 Smaller impact or easy workaround type: bug Something isn't working correctly
Milestone

Comments

@jgbayser
Copy link

jgbayser commented Apr 5, 2024

Have you read the FAQ and checked for duplicate open issues?
YES

If the problem is related to FairPlay, have you read the tutorial?
Not related to fairplay

What version of Shaka Player are you using?
4.7.11

Can you reproduce the issue with our latest release version?
YES

Can you reproduce the issue with the latest code from main?
Did not test that

Are you using the demo app or your own custom app?
We are using our own custom application

If custom app, can you reproduce the issue using our demo app?
Did not test that

What browser and OS are you using?
Chromium 123.0.6312

For embedded devices (smart TVs, etc.), what model and firmware version are you using?
Reproduced on all Tizen TV 2020, 2021, 2022

What are the manifest and license server URIs?
URI sent MP

What configuration are you using? What is the output of player.getConfiguration()?

{
    "drm": {
        "keepMediaKeys": true,
        "retryParameters": {
            "maxAttempts": 5,
            "baseDelay": 1000,
            "backoffFactor": 2,
            "fuzzFactor": 0.5,
            "timeout": 10000,
            "stallTimeout": 5000,
            "connectionTimeout": 10000,
            "autoReset": false
        },
        "servers": {
            "com.widevine.alpha": "*****",
            "com.apple.fps.1_0": "*****"
        },
        "clearKeys": {},
        "advanced": {
            "com.widevine.alpha": {
                "distinctiveIdentifierRequired": false,
                "persistentStateRequired": false,
                "videoRobustness": "",
                "audioRobustness": "",
                "sessionType": "",
                "serverCertificate": {
                    *****
                },
                "serverCertificateUri": "",
                "individualizationServer": ""
            }
        },
        "delayLicenseRequestUntilPlayed": false,
        "logLicenseExchange": false,
        "updateExpirationTime": 1,
        "preferredKeySystems": [],
        "keySystemsMapping": {},
        "parseInbandPsshEnabled": false
    },
    "manifest": {
        "retryParameters": {
            "maxAttempts": 5,
            "baseDelay": 1000,
            "backoffFactor": 2,
            "fuzzFactor": 0.5,
            "timeout": 10000,
            "stallTimeout": 5000,
            "connectionTimeout": 10000,
            "autoReset": false
        },
        "availabilityWindowOverride": null,
        "disableAudio": false,
        "disableVideo": false,
        "disableText": false,
        "disableThumbnails": false,
        "defaultPresentationDelay": 12,
        "segmentRelativeVttTiming": false,
        "dash": {
            "clockSyncUri": "",
            "ignoreDrmInfo": false,
            "disableXlinkProcessing": false,
            "xlinkFailGracefully": false,
            "ignoreMinBufferTime": true,
            "autoCorrectDrift": true,
            "initialSegmentLimit": 1000,
            "ignoreSuggestedPresentationDelay": true,
            "ignoreEmptyAdaptationSet": false,
            "ignoreMaxSegmentDuration": false,
            "keySystemsByURI": {
                "urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b": "org.w3.clearkey",
                "urn:uuid:e2719d58-a985-b3c9-781a-b030af78d30e": "org.w3.clearkey",
                "urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed": "com.widevine.alpha",
                "urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95": "com.microsoft.playready",
                "urn:uuid:79f0049a-4098-8642-ab92-e65be0885f95": "com.microsoft.playready",
                "urn:uuid:f239e769-efa3-4850-9c16-a903c6932efb": "com.adobe.primetime"
            }
        },
        "hls": {
            "ignoreTextStreamFailures": false,
            "ignoreImageStreamFailures": false,
            "defaultAudioCodec": "mp4a.40.2",
            "defaultVideoCodec": "avc1.42E01E",
            "ignoreManifestProgramDateTime": false,
            "mediaPlaylistFullMimeType": "video/mp2t; codecs=\"avc1.42E01E, mp4a.40.2\""
        }
    },
    "streaming": {
        "retryParameters": {
            "maxAttempts": 5,
            "baseDelay": 1000,
            "backoffFactor": 2,
            "fuzzFactor": 0.5,
            "timeout": 10000,
            "stallTimeout": 5000,
            "connectionTimeout": 10000,
            "autoReset": false
        },
        "rebufferingGoal": 0.01,
        "bufferingGoal": 4,
        "bufferBehind": 1,
        "ignoreTextStreamFailures": true,
        "alwaysStreamText": false,
        "startAtSegmentBoundary": false,
        "gapDetectionThreshold": 0.5,
        "durationBackoff": 1,
        "forceTransmuxTS": false,
        "safeSeekOffset": 5,
        "stallEnabled": true,
        "stallThreshold": 1,
        "stallSkip": 0,
        "useNativeHlsOnSafari": true,
        "forceNativeHlsOnSafari": false,
        "inaccurateManifestTolerance": 1,
        "lowLatencyMode": false,
        "autoLowLatencyMode": false,
        "forceHTTPS": false,
        "preferNativeHls": false,
        "updateIntervalSeconds": 1,
        "dispatchAllEmsgBoxes": false,
        "observeQualityChanges": false,
        "maxDisabledTime": 10,
        "smarttv": true
    },
    "offline": {
        "usePersistentLicense": true,
        "numberOfParallelDownloads": 5
    },
    "abr": {
        "enabled": true,
        "useNetworkInformation": true,
        "defaultBandwidthEstimate": 2000000,
        "defaultBandwidthCount": 8,
        "fastSwitchCount": 0,
        "downCountRestriction": 3,
        "downDurationRestriction": 60,
        "switchInterval": 4,
        "bandwidthUpgradeTarget": 0.85,
        "bandwidthDowngradeTarget": 0.95,
        "restrictions": {
            "minWidth": 0,
            "maxWidth": null,
            "minHeight": 0,
            "maxHeight": null,
            "minPixels": 0,
            "maxPixels": null,
            "minFrameRate": 0,
            "maxFrameRate": null,
            "minBandwidth": 0,
            "maxBandwidth": null
        },
        "advanced": {
            "minTotalBytes": 128000,
            "minBytes": 16000,
            "fastHalfLife": 2,
            "slowHalfLife": 5
        },
        "restrictToElementSize": false,
        "ignoreDevicePixelRatio": false
    },
    "preferredAudioLanguage": "fr",
    "preferredTextLanguage": "fr",
    "preferredVariantRole": "",
    "preferredTextRole": "",
    "preferredAudioChannelCount": 2,
    "preferredVideoCodecs": [],
    "preferredAudioCodecs": [],
    "preferForcedSubs": false,
    "preferredDecodingAttributes": [],
    "restrictions": {
        "minWidth": 0,
        "maxWidth": null,
        "minHeight": 0,
        "maxHeight": null,
        "minPixels": 0,
        "maxPixels": null,
        "minFrameRate": 0,
        "maxFrameRate": null,
        "minBandwidth": 0,
        "maxBandwidth": null
    },
    "playRangeStart": 0,
    "playRangeEnd": null,
    "cmcd": {
        "enabled": false,
        "sessionId": "",
        "contentId": "",
        "useHeaders": false
    }
}

What did you do?
We are analysing endurance (12h) playback tests for Dash live multi-period streams on Tizen TVs

What did you expect to happen?
We expect the performance to be equivalent to mono-period production streams

What actually happened?
Stats and logs are showing multiple buffering and seeks after approximatively 4h of playback.
image

During our analysis we have found two specificities in the multi-period stream related to the slicing :

  • The audio and video tracks do have occasional gaps and overlaps
  • The audio and video tracks do not have the same duration for a given period and therefore the audio track ends after the period with a variable delta (cf schema)
    image

Please find attached and example of our MPD

151223_0047_1.mpd.zip

@jgbayser jgbayser added the type: bug Something isn't working correctly label Apr 5, 2024
@shaka-bot shaka-bot added this to the v5.0 milestone Apr 5, 2024
@avelad avelad added the platform: Tizen Issues affecting Tizen label Apr 5, 2024
@joeyparrish joeyparrish added the priority: P2 Smaller impact or easy workaround label Apr 12, 2024
@jgbayser jgbayser changed the title Freeze/Buffering on dash live multi-period stream Freeze/Buffering on dash live multi-period stream for ad insertion Apr 25, 2024
@jgbayser
Copy link
Author

A small precision about the context : the stream is split in multiple period to prepare for ad replacement. So we have about 10-30s periods grouped in 5min frames

@avelad avelad modified the milestones: v4.8, v4.9 Apr 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
platform: Tizen Issues affecting Tizen priority: P2 Smaller impact or easy workaround type: bug Something isn't working correctly
Projects
None yet
Development

No branches or pull requests

4 participants