Roku Developer Program

Join our online forum to talk to Roku developers and fellow channel creators. Ask questions, share tips with the community, and find helpful resources.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Lim
Visitor

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 4
edisontien
Visitor

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
Roku Guru

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
Visitor

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
Visitor

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