-
Notifications
You must be signed in to change notification settings - Fork 133
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
PIPELINE_ERROR_INVALID_STATE error when using Playready/Dash stream (mixed encrypted/unecrypted content) #1403
Comments
Hi, Interesting, we've heard by looking around some time ago of this type of problem when going from encrypted to unencrypted and vice-versa on PlayReady devices, but we've never really were able to reliably reproduce it (maybe it's also content-dependent?) We have some old work we still maintain (we last rebased it last week) that create fake encryption metadata for initialization segments of clear Representation (408191e#diff-5182788b34332efc49b4a47fcd7ffa0af9e5698d8da035c5e8cade8e95b920ce) which is a trick we've for example seen on the shaka-player (we've never merged that development on our side as we've never really been able to reproduce the issue). With a little work, I can make an RxPlayer version including it to see if that fixes the issue, then if it fixes this issue and seen as non-problematic with enough testing we might be able to include it in a future version. |
Hi, Thanks. If this is not a problem we could check it on our side with provided RxPlayer version. |
Hi, If it's still possible for you I updated and tested the
This will depend on the commit a74239e, which is currently the last commit of the Can you test it to see if unencrypted/encrypted transitions (and vice-versa) works with it? |
@adamtatur are we able to plan this on our side (with rxpalyer 4) or the custom branch for testing purposes. |
Following our conversation, I just re-checked, we have two builds made, both for the RxPlayer v3 and v4. When relying on v3, you can put on your package.json:
When relying on v4, set instead:
Those commits contain built RxPlayer, so you just need to perform a Let me know if it fixes things. |
Hi, Unfortunately, the error still occurs when it comes to the case of transition from unencrypted to encrypted periods. Player throws an error: Checked for both rxplayer fix versions. |
OK so if I get this correctly, there is an improvement for encrypted -> clear (the video does not turn green anymore), but there's still a fatal error for clear -> encrypted |
If you're calling |
Unfortunately, using reload didn't fix an issue for clear -> encrypted transitions |
Just to keep track of the attempts of work-arounds I've made, now only for clear -> encrypted transitions:
|
An application reported to us an issue where they couldn't play a content of mixed clear and encrypted contents on PlayReady devices. After a LOT of attempts at work-arounds, some of them described [here](#1403), we didn't succeed to actually find a good solution that would both allow smooth transition between Periods and a mix of encrypted unencrypted content. So I attempted to play the same content with other players: - dash.js didn't had a smooth transition between Periods here, it first loaded and played the clear content, then once finished loaded and played the encrypted content with a black screen and license request in-between. - The shaka-player failed to play the content, I tried to debug it but I did not succeed to make it play the content. This is very probably an issue with PlayReady, yet they historically haven't been quick to fix issues we reported, so we may have to provide a perhaps-temporary solution here. That's why I'm introducing the for-now undocumented (and experimental feature?) `keySystems[].failOnEncryptedAfterClear` `loadVideo` option. When set to `true`, we'll reload if an encrypted Period is encountered after a clear Period has been played. The logic for now is not perfect with very rare risks of false negatives.
An application reported to us an issue where they couldn't play a content of mixed clear and encrypted contents on PlayReady devices. After a LOT of attempts at work-arounds, some of them described [here](#1403), we didn't succeed to actually find a good solution that would both allow smooth transition between Periods and a mix of encrypted unencrypted content. So I attempted to play the same content with other players: - dash.js didn't had a smooth transition between Periods here, it first loaded and played the clear content, then once finished loaded and played the encrypted content with a black screen and license request in-between. - The shaka-player failed to play the content, I tried to debug it but I did not succeed to make it play the content. This is very probably an issue with PlayReady, yet they historically haven't been quick to fix issues we reported, so we may have to provide a perhaps-temporary solution here. That's why I'm introducing the for-now undocumented (and experimental feature?) `keySystems[].failOnEncryptedAfterClear` `loadVideo` option. When set to `true`, we'll reload if an encrypted Period is encountered after a clear Period has been played. The logic for now is not perfect with very rare risks of false negatives. NOTE: I also profited from this commit to add the `canFilterProtectionData` option to the streams. Previously it was implicitly enabled when the `drmSystemId` was defined.
An application reported to us an issue where they couldn't play a content of mixed clear and encrypted contents on PlayReady devices. After a LOT of attempts at work-arounds, some of them described [here](#1403), we didn't succeed to actually find a good solution that would both allow smooth transition between Periods and a mix of encrypted unencrypted content. So I attempted to play the same content with other players: - dash.js didn't had a smooth transition between Periods here, it first loaded and played the clear content, then once finished loaded and played the encrypted content with a black screen and license request in-between. - The shaka-player failed to play the content, I tried to debug it but I did not succeed to make it play the content. This is very probably an issue with PlayReady, yet they historically haven't been quick to fix issues we reported, so we may have to provide a perhaps-temporary solution here. That's why I'm introducing the for-now undocumented (and experimental feature?) `keySystems[].failOnEncryptedAfterClear` `loadVideo` option. When set to `true`, we'll reload if an encrypted Period is encountered after a clear Period has been played. The logic for now is not perfect with very rare risks of false negatives. NOTE: I also profited from this commit to add the `canFilterProtectionData` option to the streams. Previously it was implicitly enabled when the `drmSystemId` was defined.
An application reported to us an issue where they couldn't play a content of mixed clear and encrypted contents on PlayReady devices. After a LOT of attempts at work-arounds, some of them described [here](#1403), we didn't succeed to actually find a good solution that would both allow smooth transition between Periods and a mix of encrypted unencrypted content. So I attempted to play the same content with other players: - dash.js didn't had a smooth transition between Periods here, it first loaded and played the clear content, then once finished loaded and played the encrypted content with a black screen and license request in-between. - The shaka-player failed to play the content, I tried to debug it but I did not succeed to make it play the content. This is very probably an issue with PlayReady, yet they historically haven't been quick to fix issues we reported, so we may have to provide a perhaps-temporary solution here. That's why I'm introducing the for-now undocumented (and experimental feature?) `keySystems[].failOnEncryptedAfterClear` `loadVideo` option. When set to `true`, we'll reload if an encrypted Period is encountered after a clear Period has been played. The logic for now is not perfect with very rare risks of false negatives. NOTE: I also profited from this commit to add the `canFilterProtectionData` option to the streams. Previously it was implicitly enabled when the `drmSystemId` was defined.
An application reported to us an issue where they couldn't play a content of mixed clear and encrypted contents on PlayReady devices. After a LOT of attempts at work-arounds, some of them described [here](#1403), we didn't succeed to actually find a good solution that would both allow smooth transition between Periods and a mix of encrypted unencrypted content. So I attempted to play the same content with other players: - dash.js didn't had a smooth transition between Periods here, it first loaded and played the clear content, then once finished loaded and played the encrypted content with a black screen and license request in-between. - The shaka-player failed to play the content, I tried to debug it but I did not succeed to make it play the content. This is very probably an issue with PlayReady, yet they historically haven't been quick to fix issues we reported, so we may have to provide a perhaps-temporary solution here. That's why I'm introducing the for-now undocumented (and experimental feature?) `keySystems[].failOnEncryptedAfterClear` `loadVideo` option. When set to `true`, we'll reload if an encrypted Period is encountered after a clear Period has been played. The logic for now is not perfect with very rare risks of false negatives. NOTE: I also profited from this commit to add the `canFilterProtectionData` option to the streams. Previously it was implicitly enabled when the `drmSystemId` was defined.
An application reported to us an issue where they couldn't play a content of mixed clear and encrypted contents on PlayReady devices. After a LOT of attempts at work-arounds, some of them described [here](#1403), we didn't succeed to actually find a good solution that would both allow smooth transition between Periods and a mix of encrypted unencrypted content. So I attempted to play the same content with other players: - dash.js didn't had a smooth transition between Periods here, it first loaded and played the clear content, then once finished loaded and played the encrypted content with a black screen and license request in-between. - The shaka-player failed to play the content, I tried to debug it but I did not succeed to make it play the content. This is very probably an issue with PlayReady, yet they historically haven't been quick to fix issues we reported, so we may have to provide a perhaps-temporary solution here. That's why I'm introducing the for-now undocumented (and experimental feature?) `keySystems[].failOnEncryptedAfterClear` `loadVideo` option. When set to `true`, we'll reload if an encrypted Period is encountered after a clear Period has been played. The logic for now is not perfect with very rare risks of false negatives. NOTE: I also profited from this commit to add the `canFilterProtectionData` option to the streams. Previously it was implicitly enabled when the `drmSystemId` was defined.
An application reported to us an issue where they couldn't play a content of mixed clear and encrypted contents on PlayReady devices. After a LOT of attempts at work-arounds, some of them described [here](#1403), we didn't succeed to actually find a good solution that would both allow smooth transition between Periods and a mix of encrypted unencrypted content. So I attempted to play the same content with other players: - dash.js didn't had a smooth transition between Periods here, it first loaded and played the clear content, then once finished loaded and played the encrypted content with a black screen and license request in-between. - The shaka-player failed to play the content, I tried to debug it but I did not succeed to make it play the content. This is very probably an issue with PlayReady, yet they historically haven't been quick to fix issues we reported, so we may have to provide a perhaps-temporary solution here. That's why I'm introducing the for-now undocumented (and experimental feature?) `keySystems[].failOnEncryptedAfterClear` `loadVideo` option. When set to `true`, we'll reload if an encrypted Period is encountered after a clear Period has been played. The logic for now is not perfect with very rare risks of false negatives. NOTE: I also profited from this commit to add the `canFilterProtectionData` option to the streams. Previously it was implicitly enabled when the `drmSystemId` was defined.
An application reported to us an issue where they couldn't play a content of mixed clear and encrypted contents on PlayReady devices. After a LOT of attempts at work-arounds, some of them described [here](#1403), we didn't succeed to actually find a good solution that would both allow smooth transition between Periods and a mix of encrypted unencrypted content. So I attempted to play the same content with other players: - dash.js didn't had a smooth transition between Periods here, it first loaded and played the clear content, then once finished loaded and played the encrypted content with a black screen and license request in-between. - The shaka-player failed to play the content, I tried to debug it but I did not succeed to make it play the content. This is very probably an issue with PlayReady, yet they historically haven't been quick to fix issues we reported, so we may have to provide a perhaps-temporary solution here. That's why I'm introducing the for-now undocumented (and experimental feature?) `keySystems[].failOnEncryptedAfterClear` `loadVideo` option. When set to `true`, we'll reload if an encrypted Period is encountered after a clear Period has been played. The logic for now is not perfect with very rare risks of false negatives. NOTE: I also profited from this commit to add the `canFilterProtectionData` option to the streams. Previously it was implicitly enabled when the `drmSystemId` was defined.
An application reported to us an issue where they couldn't play a content of mixed clear and encrypted contents on PlayReady devices. After a LOT of attempts at work-arounds, some of them described [here](#1403), we didn't succeed to actually find a good solution that would both allow smooth transition between Periods and a mix of encrypted unencrypted content. So I attempted to play the same content with other players: - dash.js didn't had a smooth transition between Periods here, it first loaded and played the clear content, then once finished loaded and played the encrypted content with a black screen and license request in-between. - The shaka-player failed to play the content, I tried to debug it but I did not succeed to make it play the content. This is very probably an issue with PlayReady, yet they historically haven't been quick to fix issues we reported, so we may have to provide a perhaps-temporary solution here. That's why I'm introducing the for-now undocumented (and experimental feature?) `keySystems[].failOnEncryptedAfterClear` `loadVideo` option. When set to `true`, we'll reload if an encrypted Period is encountered after a clear Period has been played. The logic for now is not perfect with very rare risks of false negatives. NOTE: I also profited from this commit to add the `canFilterProtectionData` option to the streams. Previously it was implicitly enabled when the `drmSystemId` was defined.
An application reported to us an issue where they couldn't play a content of mixed clear and encrypted contents on PlayReady devices. After a LOT of attempts at work-arounds, some of them described [here](#1403), we didn't succeed to actually find a good solution that would both allow smooth transition between Periods and a mix of encrypted unencrypted content. So I attempted to play the same content with other players: - dash.js didn't had a smooth transition between Periods here, it first loaded and played the clear content, then once finished loaded and played the encrypted content with a black screen and license request in-between. - The shaka-player failed to play the content, I tried to debug it but I did not succeed to make it play the content. This is very probably an issue with PlayReady, yet they historically haven't been quick to fix issues we reported, so we may have to provide a perhaps-temporary solution here. That's why I'm introducing the for-now undocumented (and experimental feature?) `keySystems[].failOnEncryptedAfterClear` `loadVideo` option. When set to `true`, we'll reload if an encrypted Period is encountered after a clear Period has been played. The logic for now is not perfect with very rare risks of false negatives. NOTE: I also profited from this commit to add the `canFilterProtectionData` option to the streams. Previously it was implicitly enabled when the `drmSystemId` was defined.
An application reported to us an issue where they couldn't play a content of mixed clear and encrypted contents on PlayReady devices. After a LOT of attempts at work-arounds, some of them described [here](#1403), we didn't succeed to actually find a good solution that would both allow smooth transition between Periods and a mix of encrypted unencrypted content. So I attempted to play the same content with other players: - dash.js didn't had a smooth transition between Periods here, it first loaded and played the clear content, then once finished loaded and played the encrypted content with a black screen and license request in-between. - The shaka-player failed to play the content, I tried to debug it but I did not succeed to make it play the content. This is very probably an issue with PlayReady, yet they historically haven't been quick to fix issues we reported, so we may have to provide a perhaps-temporary solution here. That's why I'm introducing the for-now undocumented (and experimental feature?) `keySystems[].failOnEncryptedAfterClear` `loadVideo` option. When set to `true`, we'll reload if an encrypted Period is encountered after a clear Period has been played. The logic for now is not perfect with very rare risks of false negatives. NOTE: I also profited from this commit to add the `canFilterProtectionData` option to the streams. Previously it was implicitly enabled when the `drmSystemId` was defined.
An application reported to us an issue where they couldn't play a content of mixed clear and encrypted contents on PlayReady devices. After a LOT of attempts at work-arounds, some of them described [here](#1403), we didn't succeed to actually find a good solution that would both allow smooth transition between Periods and a mix of encrypted unencrypted content. So I attempted to play the same content with other players: - dash.js didn't had a smooth transition between Periods here, it first loaded and played the clear content, then once finished loaded and played the encrypted content with a black screen and license request in-between. - The shaka-player failed to play the content, I tried to debug it but I did not succeed to make it play the content. This is very probably an issue with PlayReady, yet they historically haven't been quick to fix issues we reported, so we may have to provide a perhaps-temporary solution here. That's why I'm introducing the for-now undocumented (and experimental feature?) `keySystems[].failOnEncryptedAfterClear` `loadVideo` option. When set to `true`, we'll reload if an encrypted Period is encountered after a clear Period has been played. The logic for now is not perfect with very rare risks of false negatives. NOTE: I also profited from this commit to add the `canFilterProtectionData` option to the streams. Previously it was implicitly enabled when the `drmSystemId` was defined.
Hi,
We noticed an issue when integrating avod functionality with Playready/DASH streams. When provided manifest contains both encrypted and unencrypted periods player doesn't work properly.
use case 1: (unencrypted periods are played -> transition to encrypted periods)
When trying to download new segments that are encrypted, the player returns the error:
The player stopped because of an error MediaError: MediaError (MEDIA_ERR_DECODE) PIPELINE_ERROR_INVALID_STATE: MediaFoundationRenderer error: kCdmProxyReceivedInInvalidState (Error (0x13D) while retrieving error. (0x8004FA03)
use case 2: (encrypted periods are played -> transition to unencrypted periods)
In this case, the player continues to play but the video turns green.
We checked both scenarios using Widevine/DASH configuration and everything works fine. The only thing that caught my eye was that the license fetching logic runs a few seconds before going to the encrypted parts than is the case with Playready/DASH.
Issue is presented using:
Is there any know solution to circumvent this problem using the appropriate player configuration?
The text was updated successfully, but these errors were encountered: