Lim
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-26-2018
07:02 PM
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??
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??
4 REPLIES 4
edisontien
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-31-2018
11:13 AM
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!
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
Roku Guru
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-02-2018
10:47 PM
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/
http://devtools.web.roku.com/stream_tester/html/
alfekete81
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-04-2018
12:53 PM
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.
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
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-09-2019
07:52 AM
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
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