Roku Developer Program

Developers and content creators—a complete solution for growing an audience directly.
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Lim
Level 7

Unable to play PlayReady drm stream on OS 8.1.0

I can't play PlayReady stream on Roku device with OS version 8.1.0.
It was played well with same device, OS version 8.0.1 before. Also I have another, Roku Ultra with v8.0.1, and it works fine.
With os v8.0.1, 'Video' node return errorCode -3(Unknown error), and errorMsg 'Ignored'

I found that PlayReady library is changed from 2.5 to 3 at OS 8.1.0 from release note (https://sdkdocs.roku.com/display/sdkdoc ... -05/1/2018).

Does any body having same problem as me? What part of my PlayReady stream can cause this kind of problem??
0 Kudos
4 Replies
edisontien
Level 7

Re: Unable to play PlayReady drm stream on OS 8.1.0

Bump.

I have been unsuccessful in getting Playready encrypted DASH streams to play (decrypt) properly.  Looks like the stream gets loaded, so assume LAURL request is happening, but the content segments are never decrypted.  About to try and hook up a capture from the Roku using internet-sharing and see if I can't get an HTTP sequence dump.  

Currently, I'm running on 8.1.0 on an Ultra, so I can't comment on any prior versions.  But if anyone has insight into what else I could be trying, please let me know.

Thanks!
0 Kudos
gomad
Level 7

Re: Unable to play PlayReady drm stream on OS 8.1.0

try playing/checking your stream in the stream tester app provided. then you can make sure if its OS problem or something in your code.
http://devtools.web.roku.com/stream_tester/html/
0 Kudos
alfekete81
Level 7

Re: Unable to play PlayReady drm stream on OS 8.1.0

I'm also in the same situation.
Tested on more device with OS 8.1.0. On some is working properly but on others I have a weird situation that after a few seconds of streaming, there is a -6 (DRM error) throwed.
0 Kudos
jasonjustman
Level 7

Re: Unable to play PlayReady drm stream on OS 8.1.0

I ran into this same issue on Roku 9.0.0, and after about 8h of troubleshooting down to the isobmff init box level, I discovered the following in regards to my MPD encode with CENC for PR+WV:

Working Older (non-CENC) DASH PlayReady+Widevine encodes have an init box (using mp4dump --verbosity 3)

size=8+32
size=12+20
                   default_isProtected = 1
                   default_Per_Sample_IV_Size = 8


While newer non-working (CENC) compatible DASH PlayReady+Widevine encodes have an init box with:

size=8+32
size=12+20
                   default_isProtected = 1
                   default_Per_Sample_IV_Size = 16


Tracing this down lead me to the following PlayReady CENC documentation (https://docs.microsoft.com/en-us/playready/specifications/mpeg-dash-playready), covering that IV PlayReady versions less than 4 only support a 0 or 8 byte IV field.  


The size in bytes of the Initialization Vector (IV) field.
- PlayReady version 1, 2, 3 support 0 and 8.
- PlayReady version 4 and higher support 0, 8 and 16.
If default_IsEncrypted =1, default_IV_size MUST NOT be set to 0.

Since not all PlayReady enabled players support 16 byte Initialization Vectors, it is RECOMMENDED that only an default_IV_size of 8 be used for encrypted content, if the service needs to reach PlayReady version 1/2/3 players.


Latest Roku F/W running 9.0.0 build 4148-08 shows the following for PlayReady support:


device = CreateObject("roDeviceInfo")
data = device.GetDrmInfoEx()
print data.PlayReady

->
{
    multikey: false
    securestop: true
    tee: false
    version: "2.5"
}

Modifying the encoder job configuration to use CENC defaultIV of 8 bytes resolved the problem:


e.g.
        cencDrm.setIvSize(IvSize.EIGHT_BYTES);


HTH,
j
0 Kudos