Roku Developer Program

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

Roku bug: Streaming hls to Video RSG component, cert authorization not sent

Hello, 
 I am trying to switch from using the roVideoScreen element to using an embedded Video element(RSG)

The https server i am streaming from needs certificate authorization to be sent up, but it is not being sent up when using the new Video element (https://sdkdocs.roku.com/display/sdkdoc/Video)

 I am setting the certificate file and I believe i am setting everything needed for the Video element, however playback is failing
m.video.errorCode               -3
An unexpected problem (but not server timeout or HTTP error) has been detected.


The same error happens when I use the roVideoScreen and don't call video.SetCertificatesFile(getCertFilename())
function setVideo() as void
m.video = m.top.findNode("musicvideos")
m.video.observeField("state", "stateChanged")

httpAgent = CreateObject("roHttpAgent")
m.video.setHttpAgent(httpAgent)

videoContent = createObject("RoSGNode", "ContentNode")
'THIS IS HTTPS m3u8
videoContent.url = m.top.item.StreamUrl
'below WORKS
'videoContent.url = "https://bitmovin-a.akamaihd.net/content/playhouse-vr/m3u8s/105560.m3u8"
videoContent.title = m.top.item.Title
videoContent.streamformat = "hls"
videoContent.SwitchingStrategy = "full-adaptation"
subtitle_config = {
TrackName: "eia608/1"

videoContent.SubtitleConfig = subtitle_config
videoContent.HttpSendClientCertificates = true
videoContent.HttpCertificatesFile = getCertFilename()

headers = []
headers.push("x-roku-reserved-dev-id:")
videoContent.HttpHeaders = headers

m.video.content = videoContent

m.video.control = "play"
end function


Does anyone have any ideas why the certificate authorization would not be sent to the server?

Is this a roku bug that anyone is aware of? Can I log this somewhere, so Roku can investigate?
0 Kudos
5 REPLIES 5
rholicopp
Level 7

Re: Streaming hls to Video RSG component, playback fails

Bump, we are really in need of assistance from a Roku contact. Thanks

A similar question has come up before (https://forums.roku.com/viewtopic.php?t=93082) and we are just getting ignored.
I have found the way the docs specify how to do it, but they DO not work, this is a serious issue!

To be clear, the issue is, this snippet is NOT sending certificate authorization to the server (tested on roku os 7.5 and 7.6 beta)


  •  videoContent.HttpSendClientCertificates = true

    videoContent.HttpCertificatesFile = "pkg:/certs/lab/gd_bundle-g2-g1.crt"

    httpAgent = CreateObject("roHttpAgent")

    m.video.setHttpAgent(httpAgent)
     
    m.video.content = videoContent

    m.video.control = "play"

0 Kudos
belltown
Level 9

Re: Streaming hls to Video RSG component, playback fails

"rholicopp" wrote:
Bump, we are really in need of assistance from a Roku contact. Thanks

A similar question has come up before (https://forums.roku.com/viewtopic.php?t=93082) and we are just getting ignored.
I have found the way the docs specify how to do it, but they DO not work, this is a serious issue!

To be clear, the issue is, this snippet is NOT sending certificate authorization to the server (tested on roku os 7.5 and 7.6 beta)


  •  videoContent.HttpSendClientCertificates = true

    videoContent.HttpCertificatesFile = "pkg:/certs/lab/gd_bundle-g2-g1.crt"

    httpAgent = CreateObject("roHttpAgent")

    m.video.setHttpAgent(httpAgent)
     
    m.video.content = videoContent

    m.video.control = "play"


I don't see why you're creating a brand new roHttpAgent object, then assigning it to your Video node. I don't think you need to do that. The Video node creates its own roHttpAgent. All you should need to do is set the relevant HTTPS content meta-data attributes.

Try removing these lines:
httpAgent = CreateObject("roHttpAgent")

m.video.setHttpAgent(httpAgent)

If it doesn't work then most likely it's because of what you have in your certificates file.
https://github.com/belltown/
0 Kudos
rholicopp
Level 7

Re: Streaming hls to Video RSG component, playback fails

"belltown" wrote:
"rholicopp" wrote:
Bump, we are really in need of assistance from a Roku contact. Thanks

A similar question has come up before (https://forums.roku.com/viewtopic.php?t=93082) and we are just getting ignored.
I have found the way the docs specify how to do it, but they DO not work, this is a serious issue!

To be clear, the issue is, this snippet is NOT sending certificate authorization to the server (tested on roku os 7.5 and 7.6 beta)


  •  videoContent.HttpSendClientCertificates = true

    videoContent.HttpCertificatesFile = "pkg:/certs/lab/gd_bundle-g2-g1.crt"

    httpAgent = CreateObject("roHttpAgent")

    m.video.setHttpAgent(httpAgent)
     
    m.video.content = videoContent

    m.video.control = "play"


I don't see why you're creating a brand new roHttpAgent object, then assigning it to your Video node. I don't think you need to do that. The Video node creates its own roHttpAgent. All you should need to do is set the relevant HTTPS content meta-data attributes.

Try removing these lines:
httpAgent = CreateObject("roHttpAgent")

m.video.setHttpAgent(httpAgent)

If it doesn't work then most likely it's because of what you have in your certificates file.

Thank you for the response, Belltown.
  I have tried removing my own httpagent as well,  ive tried so many combinations 🙂 None of em work, it seems like the roku is not setup correctly to send them. 
  I would imagine since the headers are not being sent either, that its more than the certificates, but I'm in the dark here.
0 Kudos

Re: Roku bug: Streaming hls to Video RSG component, cert authorization not sent

try this approach...

    m.httpAgent = CreateObject("roHttpAgent")
    m.httpAgent.SetCertificatesFile ("common:/certs/ca-bundle.crt")
    m.httpAgent.EnableCookies()

    m.videoPlayer.setHttpAgent(m.httpAgent)
0 Kudos
kmikz
Level 9

Re: Roku bug: Streaming hls to Video RSG component, cert authorization not sent

What worked for me was:

content = createObject("RoSGNode","ContentNode")
content.streamFormat = "hls"
content.title = title
content.description = description
content.url = url
content.HttpSendClientCertificates = true
content.HttpCertificatesFile = "common:/certs/ca-bundle.crt"

m.videoPlayer.content = content

m.videoPlayer.EnableCookies()
m.videoPlayer.SetCertificatesFile("common:/certs/ca-bundle.crt")
m.videoPlayer.InitClientCertificates()

m.videoPlayer.control = "play"
0 Kudos