Your Digital Media Has Never Looked So Good

 
Lim
Topic Author
Posts: 5
Joined: Tue Jun 26, 2018 6:47 pm

Unable to play PlayReady drm stream on OS 8.1.0

Tue Jun 26, 2018 7:02 pm

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??
 
edisontien
Posts: 1
Joined: Fri Aug 31, 2018 11:07 am

Re: Unable to play PlayReady drm stream on OS 8.1.0

Fri Aug 31, 2018 11:13 am

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!
 
gomad
Posts: 57
Joined: Wed Nov 29, 2017 4:07 am

Re: Unable to play PlayReady drm stream on OS 8.1.0

Sun Sep 02, 2018 10:47 pm

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/
 
alfekete81
Posts: 2
Joined: Wed Dec 21, 2016 9:03 am

Re: Unable to play PlayReady drm stream on OS 8.1.0

Tue Sep 04, 2018 12:53 pm

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.
 
jasonjustman
Posts: 3
Joined: Tue Jul 09, 2019 7:41 am

Re: Unable to play PlayReady drm stream on OS 8.1.0

Tue Jul 09, 2019 7:52 am

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)

                              [schi] size=8+32
                 [tenc] size=12+20
                   default_isProtected = 1
                   default_Per_Sample_IV_Size = 8
                   default_KID = [a9 4c cc f3 5e 1d 41 44 bb af a3 8b 13 be a1 83]

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

                                   [schi] size=8+32
                 [tenc] size=12+20
                   default_isProtected = 1
                   default_Per_Sample_IV_Size = 16
                   default_KID = [73 29 4d 31 81 25 4e 6f bb 4e 83 b1 b3 ed d4 06]

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

Who is online

Users browsing this forum: No registered users and 3 guests