我正在开发一个自定义 Roku 频道,我需要使用来自以下直播活动的 livestream.com 视频流:
http://livestream.com/accounts/11222132/events/3665575
使用他们的 json 服务,我已经能够获得一个 m3u8 流。该流在 iOS、Android 和 Fire OS 上运行良好,但我无法在 Roku 上运行。
此代码获取并尝试播放我的流:
Function displayVideo()
print "Displaying video: "
p = CreateObject("roMessagePort")
video = CreateObject("roVideoScreen")
video.setMessagePort(p)
'bitrates = [0] ' 0 = no dots, adaptive bitrate
'bitrates = [348] ' <500 Kbps = 1 dot
'bitrates = [664] ' <800 Kbps = 2 dots
'bitrates = [996] ' <1.1Mbps = 3 dots
'bitrates = [2048] ' >=1.1Mbps = 4 dots
bitrates = [0]
request = CreateObject("roUrlTransfer")
request.SetUrl("http://livestream.com/api/accounts/11222132/events/3665575/viewing_info")
jsonString = request.GetToString()
myJson = ParseJSON(jsonString)
theurl = myJson.streamInfo.m3u8_url
urls = [theurl]
print "the json url is:"
print urls
qualities = ["SD"]
StreamFormat = "hls"
title = "COACB TV 39"
srt=""
videoclip = CreateObject("roAssociativeArray")
videoclip.StreamBitrates = bitrates
videoclip.StreamUrls = urls
videoclip.StreamQualities = qualities
videoclip.StreamFormat = streamformat
videoclip.Title = title
print "srt = ";srt
if srt <> invalid and srt <> "" then
videoclip.SubtitleUrl = srt
end if
video.SetContent(videoclip)
video.show()
lastSavedPos = 0
statusInterval = 10 'position must change by more than this number of seconds before saving
while true
msg = wait(0, video.GetMessagePort())
if type(msg) = "roVideoScreenEvent"
if msg.isScreenClosed() then 'ScreenClosed event
print "Closing video screen"
exit while
else if msg.isPlaybackPosition() then
nowpos = msg.GetIndex()
if nowpos > 10000
end if
if nowpos > 0
if abs(nowpos - lastSavedPos) > statusInterval
lastSavedPos = nowpos
end if
end if
else if msg.isRequestFailed()
print "play failed: "; msg.GetMessage()
else
print "Unknown event: "; msg.GetType(); " msg: "; msg.GetMessage()
endif
end if
end while
End Function
在我的控制台中,我收到以下相关消息:
显示视频:
json网址是:
http://api.new.livestream.com/accounts/11222132/events/3665575/broadcasts/92495453.m3u8?dw=100&hdnea=st=1436386598~exp=1436387498~acl=/i/11222132_3665575_bee34040_1@123hmac8 _ =dfacbbb090cc8df9435397d7c38d134be418756b3a00620297948eea35bedae7
srt =
未知事件:11 消息:未指定或无效的轨道路径/url。
播放失败:
关闭视频画面
我得到的错误表明 url 无效,事实上,如果我给它一个“nothing honey”的 url 值,它会给我同样的错误。所以如果我从这个 json 得到的 url 是错误的.. 那么它是怎么错的呢?它适用于我的其他设备...