我目前遇到的问题是,在请求播放视频节点时我的标题被剥离了。服务器要求这些标头能够播放内容。
device=CreateObject("roDeviceInfo")
hvideo = CreateObject("roHttpAgent")
hvideoheaders = {
"Device": device.GetDeviceUniqueId(),
"DeviceProf": device.GetModelDisplayName()+"("+device.GetModel()+";"+device.GetVersion()+";Roku;roku)",
"Version": "C4.9.9_S0",
"x-roku-reserved-dev-id": "",
}
hvideo.SetHeaders(hvideoheaders)
'set videoContent Parameters
videoContent = createObject("RoSGNode", "ContentNode")
videoContent.url = streamUrl
videoContent.Title = m.top.item.Title
videoContent.StreamFormat = "hls"
videoContent.SubtitleConfig = subtitle_config
videoContent.HttpSendClientCertificates = true
'Set Video
m.video = m.top.findNode("musicvideos")
m.video.SetConnectionTimeout(30)
'm.video.notificationInterval = 30
m.video.observeField("state", "stateChanged")
m.video.observeField("streamInfo", "streamInfoChanged")
m.video.observeField("streamingSegment", "streamingSegmentChanged")
m.video.content = videoContent
m.video.setHttpAgent(hvideo)
m.video.control = "play"
使用不同的HTTP代理时,遇到的唯一标头是x-roku-reserved-dev-id。
如果我使用视频节点内容元数据作为标头,则所有标头都存在,除了x-roku-reserved-dev-id,这将使Web服务器访问规则失败。这就是我试图设置这些的方法:
headers = []
headers.push("x-roku-reserved-dev-id:")
headers.push("Device:" + device.GetDeviceUniqueId())
headers.push("DeviceProf:" + device.GetModelDisplayName()+"("+device.GetModel()+";"+device.GetVersion()+";Roku;roku)")
headers.push("Version:C4.9.9_S0")
videoContent.HttpHeaders = headers
我尝试过设置没有x-roku-reserved-dev-id的内容节点和带有x-roku-reserved-dev-id的HTTPAgent但是它的结果是相同的......
有什么想法?
答案 0 :(得分:0)
您应该将标头添加到roUrlTransfer对象:
request = CreateObject("roUrlTransfer")
request.SetRequest("POST")
request.AddHeader(headerName1, headerValue1)
request.AddHeader(headerName2, headerValue2)
request.AddHeader(headerName3, headerValue3)
答案 1 :(得分:0)
这实际上最终成为Roku的固件问题。此后,ROKU发布了固定固件v7.7 b 4061 +