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

Decoder error w/ DRM content on Tizen Browser since v3.2.0 #4634

Closed
jakubkrolikowski opened this issue Oct 30, 2022 · 9 comments · Fixed by #4973
Closed

Decoder error w/ DRM content on Tizen Browser since v3.2.0 #4634

jakubkrolikowski opened this issue Oct 30, 2022 · 9 comments · Fixed by #4973
Labels
flag: seeking PR We are actively seeking PRs for this; we do not currently expect the core team will resolve this platform: Tizen Issues affecting Tizen platform: TV/STB Issues affecting smart TV or set-top box platforms priority: P2 Smaller impact or easy workaround status: archived Archived and locked; will not be updated type: bug Something isn't working correctly
Milestone

Comments

@jakubkrolikowski
Copy link

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

What version of Shaka Player are you using?
3.1.8, 3.3.12, 4.2.0, 4.2.3

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

Can you reproduce the issue with the latest code from main?
yes

Are you using the demo app or your own custom app?
own custom app

If custom app, can you reproduce the issue using our demo app?
no

What browser and OS are you using?
Samsung Internet on Tizen 6.0

For embedded devices (smart TVs, etc.), what model and firmware version are you using?
Tizen 6.0

What configuration are you using? What is the output of player.getConfiguration()?
"manifest": {
"application/dash+xml": true,
"video/vnd.mpeg.dash.mpd": true,
"application/x-mpegurl": true,
"application/vnd.apple.mpegurl": true,
"application/x-offline-manifest": true,
"mpd": true,
"m3u8": true,
"application/vnd.ms-sstr+xml": false,
"ism": false
},
"media": {
"video/mp4; codecs="avc1.42E01E"": true,
"video/mp4": true,
"video/mp4; codecs="avc3.42E01E"": true,
"video/mp4; codecs="hev1.1.6.L93.90"": true,
"video/mp4; codecs="hvc1.1.6.L93.90"": true,
"video/mp4; codecs="hev1.2.4.L153.B0"; eotf="smpte2084"": false,
"video/mp4; codecs="hvc1.2.4.L153.B0"; eotf="smpte2084"": false,
"video/mp4; codecs="vp9"": false,
"video/mp4; codecs="vp09.00.10.08"": true,
"video/mp4; codecs="av01.0.01M.08"": true,
"audio/mp4; codecs="mp4a.40.2"": true,
"audio/mp4": true,
"audio/mp4; codecs="ac-3"": true,
"audio/mp4; codecs="ec-3"": true,
"audio/mp4; codecs="opus"": true,
"audio/mp4; codecs="flac"": true,
"video/webm; codecs="vp8"": true,
"video/webm": true,
"video/webm; codecs="vp9"": true,
"video/webm; codecs="vp09.00.10.08"": true,
"audio/webm; codecs="vorbis"": true,
"audio/webm": true,
"audio/webm; codecs="opus"": true,
"video/mp2t; codecs="avc1.42E01E"": false,
"video/mp2t": false,
"video/mp2t; codecs="avc3.42E01E"": false,
"video/mp2t; codecs="hvc1.1.6.L93.90"": false,
"video/mp2t; codecs="mp4a.40.2"": false,
"video/mp2t; codecs="ac-3"": false,
"video/mp2t; codecs="ec-3"": false,
"text/vtt": true,
"application/mp4; codecs="wvtt"": true,
"application/mp4": true,
"application/ttml+xml": true,
"application/mp4; codecs="stpp"": true
},
"drm": {
"com.microsoft.playready.recommendation": null,
"com.apple.fps.3_0": null,
"com.apple.fps.2_0": null,
"com.apple.fps.1_0": null,
"com.adobe.primetime": null,
"org.w3.clearkey": {
"persistentState": true
},
"com.widevine.alpha": {
"persistentState": true
},
"com.microsoft.playready": {
"persistentState": true
},
"com.apple.fps": {
"persistentState": true
}
},
"offline": true,
"disableVP9": null,
"vp9": false,
"isChrome": false,
"isChromecastAvailable": false,
"isSafari": false,
"osName": "Tizen",
"browserName": "Samsung Internet for Android"
}, {
"drm": {
"retryParameters": {
"maxAttempts": 7,
"baseDelay": 1000,
"backoffFactor": 2,
"fuzzFactor": 0.5,
"timeout": 30000,
"stallTimeout": 5000,
"connectionTimeout": 10000
},
"servers": {
"com.widevine.alpha": "https://lic.drmtoday.com/license-proxy-widevine/cenc/?specConform=true"
},
"clearKeys": {},
"advanced": {
"com.microsoft.playready.recommendation": {
"distinctiveIdentifierRequired": false,
"persistentStateRequired": false,
"videoRobustness": "3000",
"audioRobustness": "",
"sessionType": "",
"serverCertificate": {},
"serverCertificateUri": "",
"individualizationServer": ""
},
"com.microsoft.playready": {
"distinctiveIdentifierRequired": false,
"persistentStateRequired": false,
"videoRobustness": "2000",
"audioRobustness": "",
"sessionType": "",
"serverCertificate": {},
"serverCertificateUri": "",
"individualizationServer": ""
}
},
"delayLicenseRequestUntilPlayed": false,
"logLicenseExchange": false,
"updateExpirationTime": 1,
"preferredKeySystems": []
},
"manifest": {
"retryParameters": {
"maxAttempts": 2,
"baseDelay": 1000,
"backoffFactor": 2,
"fuzzFactor": 0.5,
"timeout": 30000,
"stallTimeout": 5000,
"connectionTimeout": 10000
},
"availabilityWindowOverride": NaN,
"disableAudio": false,
"disableVideo": false,
"disableText": false,
"disableThumbnails": false,
"defaultPresentationDelay": 0,
"dash": {
"clockSyncUri": "",
"ignoreDrmInfo": false,
"disableXlinkProcessing": false,
"xlinkFailGracefully": false,
"ignoreMinBufferTime": false,
"autoCorrectDrift": true,
"initialSegmentLimit": 1000,
"ignoreSuggestedPresentationDelay": false,
"ignoreEmptyAdaptationSet": false,
"ignoreMaxSegmentDuration": false,
"keySystemsByURI": {
"urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b": "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,
"useFullSegmentsForStartTime": false,
"defaultAudioCodec": "mp4a.40.2",
"defaultVideoCodec": "avc1.42E01E"
}
},
"streaming": {
"retryParameters": {
"maxAttempts": 120,
"baseDelay": 1000,
"backoffFactor": 2,
"fuzzFactor": 0.5,
"timeout": 20000,
"stallTimeout": 7000,
"connectionTimeout": 15000
},
"rebufferingGoal": 3,
"bufferingGoal": 45,
"bufferBehind": 10,
"ignoreTextStreamFailures": false,
"alwaysStreamText": false,
"startAtSegmentBoundary": false,
"gapDetectionThreshold": 0.5,
"smallGapLimit": 0.5,
"jumpLargeGaps": false,
"durationBackoff": 1,
"forceTransmuxTS": false,
"safeSeekOffset": 5,
"stallEnabled": true,
"stallThreshold": 1,
"stallSkip": 0,
"useNativeHlsOnSafari": true,
"inaccurateManifestTolerance": 2,
"lowLatencyMode": false,
"autoLowLatencyMode": false,
"forceHTTPS": false,
"preferNativeHls": false,
"updateIntervalSeconds": 1,
"dispatchAllEmsgBoxes": false,
"observeQualityChanges": false
},
"offline": {
"usePersistentLicense": true
},
"abr": {
"enabled": true,
"useNetworkInformation": true,
"defaultBandwidthEstimate": 10000,
"switchInterval": 5,
"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
}
},
"preferredAudioLanguage": "hi",
"preferredTextLanguage": "pl",
"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?

Some time ago I reported a similar bug:
#4357 (comment)

All videos I tested that time are playing well in new Shaka Player versions,
but I have a few cases where the encrypted video is playing well only in v 3.1.8 on the Samsung Internet browser, Tizen >= 5.0.
With higher versions, starting from 4.2.x, error 3016 appears:

 "severity": 2,
  "category": 3,
  "code": 3016,
  "data": [3, undefined, ""],
  "handled": false

It happens just in a few cases, but it's repetitive. Any idea which setting I could try for a workaround?

@jakubkrolikowski jakubkrolikowski added the type: bug Something isn't working correctly label Oct 30, 2022
@github-actions github-actions bot added this to the v4.3 milestone Oct 30, 2022
@joeyparrish
Copy link
Member

The v3.1 branch is no longer maintained. (See our maintenance policy.) Please try our v3 LTS branch, v3.3.x. We just released v3.3.12 today. If that is working, you can stick to that version for now. The v3.3.x branch will continue to receive updates until April 30, 2023.

The error you mentioned is a decode error from the platform. If the content is HLS, and the error only occurs in v4+, that could indicate a problem with Tizen 5 support for MediaSource sequence mode. That is currently a requirement for HLS in v4+.

If you'd like us to dig more deeply for you, we would need a content URL (as requested in the issue template, in the section you deleted).

If you'd like to work on this yourself, I suggest you use https://index-dot-shaka-player-demo.appspot.com/ or git bisect on your local clone to determine what version or commit first triggered the bug. That would help us understand the problem and make a fix. You are also welcome to send a PR if you find a solution.

Thanks!

@joeyparrish joeyparrish added the status: waiting on response Waiting on a response from the reporter(s) of the issue label Oct 30, 2022
@jakubkrolikowski
Copy link
Author

The problem occurs in v3.3.12 as well, unfortunately. The last working version is 3.1.8.
3016 error is from v3.2.0 release.

This is encrypted MPD, h264 video.

I can send you a content URL; this will take some time, cause I need to prepare a special version with no authorization.

@github-actions github-actions bot removed the status: waiting on response Waiting on a response from the reporter(s) of the issue label Oct 30, 2022
@joeyparrish joeyparrish changed the title DRM encrypted content plays well on Samsung Browser only with Shaka 3.1.x. still IN SOME CASES Decoder error w/ DRM content on Samsung Browser since v3.2.0 Oct 30, 2022
@joeyparrish joeyparrish added platform: TV/STB Issues affecting smart TV or set-top box platforms priority: P2 Smaller impact or easy workaround platform: Tizen Issues affecting Tizen labels Oct 30, 2022
@joeyparrish joeyparrish changed the title Decoder error w/ DRM content on Samsung Browser since v3.2.0 Decoder error w/ DRM content on Tizen Browser since v3.2.0 Oct 30, 2022
@avelad avelad modified the milestones: v4.3, v4.4 Nov 11, 2022
@FernandoGarciaDiez
Copy link
Contributor

Hi, just letting you know that we are reproducing this issue as well with all versions above 3.2.0, we also tested 4.3.0 and it was failing too.
It's not 100% reproducible in all cases, even playing the same content on the same TV can fail sometimes and succeed others. It also seems to affect more some TV sets than others, if we can find a pattern we will let you know.
Thank you!

@avelad
Copy link
Member

avelad commented Dec 23, 2022

Please, provide a url a stream to test it.

@avelad avelad added the status: waiting on response Waiting on a response from the reporter(s) of the issue label Dec 23, 2022
@github-actions
Copy link
Contributor

Closing due to inactivity. If this is still an issue for you or if you have further questions, the OP can ask shaka-bot to reopen it by including @shaka-bot reopen in a comment.

@github-actions github-actions bot removed the status: waiting on response Waiting on a response from the reporter(s) of the issue label Dec 30, 2022
@FernandoGarciaDiez
Copy link
Contributor

FernandoGarciaDiez commented Jan 20, 2023

@shaka-bot reopen

Sorry for the delay, here's a stream where we have reproduced the issue:
https://ott.zapitv.com/vod/eds/DLVY1168148499001017/_/dash_vod_enc/DLVY1168148499001017.mpd
license: https://wvfp.zapitv.com:8063?deviceId=NmFiODZjMTEtMWI4Yi0zZDgyLThiMTItZTFjNGU5YzEwNzdi
Note however that the license will expire soon, so if you need a new one let me know and I'll try to provide a new one asap.

@avelad
Copy link
Member

avelad commented Jan 20, 2023

It looks like your URL is not accessible from the US.

We are always open to accepting a PR to fix this.

@avelad avelad added the flag: seeking PR We are actively seeking PRs for this; we do not currently expect the core team will resolve this label Jan 20, 2023
@FernandoGarciaDiez
Copy link
Contributor

ok, I think I've found the root cause and I'm working on a PR but I still have some issues with unit tests at the moment...

First, @jakubkrolikowski , @avelad or someone else, could you please reopen this issue? or should I open a new one? or we could also continue the discussion in #4503 which I think looks like a duplicate from this one.

I am reproducing the issue with some streams that have 3 variants, 2 of them are supported on these TVs, but the one with higher resolution isn't. This variant uses this video: video/mp4;codecs="avc1.64002a";framerate="25";bitrate="6000000";width="1980";height="1080"

Now, with the current implementation, at filterManifestByMediaCapabilities function from stream_utils.js we are checking Capabilities.isTypeSupported(fullType) , where this "fullType" only includes the mime type and the codecs (video/mp4; codecs="avc1.64002a" for example). This is currently returning true, so the player believes that this variant is supported, but then it fails when it tries to play it.

On the other hand, the old implementation (as pointed by @snazreen at #4503) used shaka.media.MediaSourceEngine.isStreamSupported() function which internally checks Capabilities.isTypeSupported(extendedMimeType), where "extendedMimeType" includes also the width, height, bitrate and framerate (for example, video/mp4;codecs="avc1.64002a";framerate="25";bitrate="6000000";width="1980";height="1080"), which in this specific case returns false because in this case the 1980 width is not supported (it should be 1920), the variant is filtered out, and the playback is started with the other 2 variants.

I'm working on a PR that would basically change isTypeSupported(fullType) by isTypeSupported(extendedMimeType), but I still have to figure out some issues with unit tests, and also I'm not sure how to cover the mutiplexed streams case (the case from the if (video.codecs.includes(',')) at filterManifestByMediaCapabilities), or if it's not necessary to worry about that case.

@avelad avelad reopened this Feb 3, 2023
@jakubkrolikowski
Copy link
Author

jakubkrolikowski commented Feb 3, 2023 via email

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
flag: seeking PR We are actively seeking PRs for this; we do not currently expect the core team will resolve this platform: Tizen Issues affecting Tizen platform: TV/STB Issues affecting smart TV or set-top box platforms priority: P2 Smaller impact or easy workaround status: archived Archived and locked; will not be updated type: bug Something isn't working correctly
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants