-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Playback failing on device when moving from 4.7.15 to 4.8.0 #6844
Comments
We do not have that device, I recommend that you look at the recent commit history in DrmEngine (https://github.com/shaka-project/shaka-player/commits/main/lib/media/drm_engine.js) and if you find the commit that fails, we will be able to help you... Sorry! |
Hi, I tried a few versions! Using: #6189 (feat!: Remove com.adobe.primetime keysystem) To check I didn't make an error I then: The version numbers reported seemed a bit broken, but I assume from this test it's something in the changes in #5897 that is causing the issue for me? |
I'll also add that I had not yet moved to using the player.attach() method, but now I have, with the same results |
The PR is huge, but there is no change that affects the drm. |
I took a look and it did seem quite big. Would you have any further recommendations for narrowing down the issue or to break down the PR changes to test? It seems to be an issue that has been introduced and into new versions moving forward so preventing us from moving off the 4.7 branch |
The change is very big, if you can debug more, and find where the error is, we are happy to fix it :) |
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 I've not had time to work on this until now, today I've tried the newer versions as released since I first posted. |
@MikeKav We do not have that device, we can leave the issue open, but you will have to debug the error yourself, sorry! |
Hi @avelad , I do understand (as a matter of interest, do you have a UK based lab?). I've re-opened to provide some further details, hopefully someone might see something I'm doing and be able to help advise.
|
@theodab can you help here? Thanks! |
@MikeKav Does this answer all your questions? If so, would you please close the issue? |
On device the code mediaKeySystemAccess.createMediaKeys() appears to be asserting this // TODO(vaage): Look into the assertion below. If we do not have any drm
This is a little out of my experience area, but it seem the polyfill is not doing the right thing, I have tried using native mediaCapabilities but that does not work on my device |
Part of this currently seems to be a red herring, debugging 4.7.14 I can see that |
debug log up to just past player.load() looks ok as far as I can tell: debug log from device pretty much matches Edge |
After further debugging It seems like in 4.8.0 the video element doesn't get beyond loadedmetadata on device. Not sure why this is the case. I spent some time reviewing: onKeyStatusesChange_ in drm_engine.js as on device the session where simple numbers compared to Edge. However the code looked to be functioning correctly in there On device: Key status changed for session 2 |
Look we had to revert back our PS4 and 5 we are checking it. hope we will find the reason |
not in 4.8.20 but in 4.9.0 |
Hi @Iragne I'm not working on PlayStation myself (not since 2021), but it would be interesting to know of any areas to look that might be similar to the issue here. I have been on holiday but we have had some time to look a little more, I have not found anything at ShakaPlayer level yet, but looking at device firmware logs we can see that the PlayReady license looks to be requested ok, and we can see what seems to be a correct license with the expected content id being stored and made ready for use in the license store. The device uses gstreamer under the hood, there is a first-pts callback fired which normally results in an event haveEnoughData which should fire the loadedmetadata JavaScript event during loading. when using 4.7.15 this callback does occur, in 4.8.0 it doesn't. At the low level our assumption at the moment is that this means the video buffer is not being injected into the gstreamer pipeline. We don't know what would cause this difference yet We do have a couple of hosted links that we could PM someone, however the links are geofiltered to the UK. Unfortunately it will take a little time to have some gstreamer debugging completed, so I am going to look a little more at the ShakaPlayer differences in the preload system in 4.8.0 |
On our side we had to set the stream.cleardecodingcache to false FYI we had been able to point to the commit that induce our issue #6678 I'm really curious about it, what are the circumstance where the "streaming.clearDecodingCache" should be true or false @tykus160 |
@MikeKav let me know if it works |
@Iragne |
@tykus160 I was going to say the same. but we should maybe open a different bug report for PS5 and PS4. |
@Iragne any update? |
@avelad we just change the config to use the streaming.clearDecodingCache and it unblock our playback. we will share shortly information about it |
@Iragne any update? |
Today we are using streaming.clearDecodingCache to false |
We also set the clearDecodingCache to false on our end as well. This issue we are currently investigating might be of interest to you if you work on PS4 and PS5: #7325 |
I've tried testing this:
This works for me on Edge, but does not work for me on the device I am using, reporting an error: However avoiding the await functions this works
|
async function test() {
// ... your code here
}
test(); |
Thanks @joeyparrish That was the issue, this works fine on device:
Seems this part is ok for me |
Hi @joeyparrish Do you have any hints on the code areas I could look at to verify that the PlayReady license request has been parsed correctly and passed into media decoding for keyid and contentkey? |
lib/media/drm_engine.js is where most DRM code lives. Hope that helps! |
I've created a sample that demonstrates the issue on my device, if anyone has time to test this on other devices to see if it works it would be appreciated. This works for me on Edge with any version number
Working version 4.7.14, anything after 4.8.0 fails: |
This simple sample on my device using 4.7.14 results in: This simple sample on my device using 4.8.0+ results in: The sample originally called play() on receiving canplay, but changing that to loadedmetadata had no effect. |
Could you please log |
I will look at that, is there any particular point in the code or execution that would be most useful? |
Have you read the Tutorials?
Yes
Have you read the FAQ and checked for duplicate open issues?
Yes
If the question is related to FairPlay, have you read the tutorial?
N/A
What version of Shaka Player are you using?
Last working: 4.7.15
Unworking: 4.8.0 and 4.9.0
What browser and OS are you using?
EE/YouView TV Box Pro Set Top Box (https://www.bt.com/help/tv/learn-about-tv/bt-tv-boxes), Sagemcom hardware running WPE browser version 2.42.5 (slightly higher versions available soon)
YouViewHTML/1.0 AppleWebKit/605.1.15 (Sagemcom; RTIW387; RTIW387.002.X; CDS/0.10.116; API/4.0.0; PS/4.1.144) (+DVR+HTML+IPCMC+UHD+DASH+DRM+MSE)
Please ask your question
We've had a issue that playback on this STB has worked from 4.2.10 until 4.7.15, but we are experiencing failure to see/hear video/audio content with DASH/PlayReady material. Clear DASH has continued to work on both 4.8.0 and 4.9.0.
The same code is playing video and audio on Edge on all three of the above versions.
Console output seems to indicate the functionality is semi-working: There is a lot of output on setup, but then the player gets stuck in a loop repeating the below constantly:
[Debug] (video:8) – "timeNeeded=10" (shaka-player.compiled.debug.js, line 143)
[Debug] (video:8) – "update_:" – "presentationTime=0" – "bufferedAhead=10" (shaka-player.compiled.debug.js, line 143)
[Debug] (video:8) – "buffering goal met" (shaka-player.compiled.debug.js, line 143)
[Debug] (video:8) – "updating in 0.5 seconds" (shaka-player.compiled.debug.js, line 143)
[Debug] (audio:2) – "timeNeeded=10.005333333333333" (shaka-player.compiled.debug.js, line 143)
[Debug] (audio:2) – "update_:" – "presentationTime=0" – "bufferedAhead=10.005333" (shaka-player.compiled.debug.js, line 143)
[Debug] (audio:2) – "buffering goal met" (shaka-player.compiled.debug.js, line 143)
[Debug] (audio:2) – "updating in 0.5 seconds" (shaka-player.compiled.debug.js, line 143)
We do have AppleWebKit in our user agent string, but have not patched in an is[Device] API as used in platform.js as we have until now been able to use configuration switches to set behavior to a working approach.
Up until 4.7.14 the only changes we've needed have been
player.configure('streaming.useNativeHlsOnSafari', false); << This was used originally in 4.2.10 to switch our devices DASH streaming from native engine to MSE/EME
and currently for audio track switching where codecs are different we now need to add:
player.configure('mediaSource.codecSwitchingStrategy', shaka.config.CodecSwitchingStrategy.RELOAD)
We'd appreciate any ideas for areas to look at to find the problem, we've done a comparison of the new fields in config between 4.7.15 and 4.8.0 and tried a few varying settings with no visible change to behaviours
Results from https://shaka-player-demo.appspot.com/support.html:
YouViewHTML/1.0 AppleWebKit/605.1.15 (Sagemcom; RTIW387; RTIW387.002.X; CDS/0.10.116; API/4.0.0; PS/4.1.144) (+DVR+HTML+IPCMC+UHD+DASH+DRM+MSE)
v4.9.5
{
"manifest": {
"application/dash+xml": true,
"video/vnd.mpeg.dash.mpd": true,
"application/x-mpegurl": true,
"application/vnd.apple.mpegurl": true,
"application/vnd.ms-sstr+xml": true,
"application/x-offline-manifest": true
},
"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"": true,
"video/mp4; codecs="hvc1.2.4.L153.B0"; eotf="smpte2084"": true,
"video/mp4; codecs="vp9"": false,
"video/mp4; codecs="vp09.00.10.08"": true,
"video/mp4; codecs="av01.0.01M.08"": false,
"video/mp4; codecs="dvh1.20.01"": false,
"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="ac-4.02.01.01"": false,
"audio/mp4; codecs="opus"": true,
"audio/mp4; codecs="flac"": false,
"audio/mp4; codecs="dtsc"": false,
"audio/mp4; codecs="dtse"": false,
"audio/mp4; codecs="dtsx"": false,
"video/webm; codecs="vp8"": false,
"video/webm": true,
"video/webm; codecs="vp9"": false,
"video/webm; codecs="vp09.00.10.08"": true,
"audio/webm; codecs="vorbis"": false,
"audio/webm": true,
"audio/webm; codecs="opus"": true,
"video/mp2t; codecs="avc1.42E01E"": true,
"video/mp2t": true,
"video/mp2t; codecs="avc3.42E01E"": true,
"video/mp2t; codecs="hvc1.1.6.L93.90"": true,
"video/mp2t; codecs="mp4a.40.2"": true,
"video/mp2t; codecs="ac-3"": true,
"video/mp2t; codecs="ec-3"": true,
"text/vtt": true,
"application/mp4; codecs="wvtt"": true,
"application/mp4": true,
"application/ttml+xml": true,
"application/mp4; codecs="stpp"": true,
"audio/aac": true,
"audio/ac3": true,
"audio/ec3": true,
"audio/mpeg": true
},
"drm": {
"org.w3.clearkey": null,
"com.widevine.alpha": null,
"com.microsoft.playready": {
"persistentState": false,
"encryptionSchemes": [
"cenc",
"cbcs"
],
"videoRobustnessLevels": [
"150",
"2000",
"3000"
],
"audioRobustnessLevels": [
"150",
"2000",
"3000"
]
},
"com.microsoft.playready.recommendation": null,
"com.chromecast.playready": null,
"com.apple.fps.1_0": null,
"com.apple.fps": null
},
"hardwareResolution": {
"width": null,
"height": null
},
"offline": true
}
The text was updated successfully, but these errors were encountered: