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: 
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
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 7

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 Smiley Happy 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 7

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