直播(某些频道)通过Roku Box播放

时间:2014-10-20 09:45:44

标签: live http-live-streaming roku brightscript

我试图加入igmp直播,然后在roku框中播放。但它没有奏效。 是不是我们不能在Roku盒子里加入组播流? 如果可以通过HLS进行,那么解决方案是什么? 我在链接上尝试了github中的引用:https://github.com/thetrime/trimeplay/blob/master/source/trimeplay.brs 请参考我使用的另一个代码作为参考:

function SetupJoin()
ssdpAddress = "239.60.60.7:6607"
ssdpPort = 6607
timeout = 300 * 60 * 1000
groupAddr = CreateObject("roSocketAddress")
groupAddr.setAddress(ssdpAddress)
groupAddr.setPort(ssdpPort)
listenAddr = CreateObject("roSocketAddress")
listenAddr.setPort(ssdpPort)
listenAddr.setAddress("0.0.0.0")
listen = CreateObject("roDatagramSocket")
listen.setReuseAddr(true)
listen.setAddress(listenAddr)
result = listen.joinGroup(groupAddr)
listen.setMessagePort(canvas.GetMessagePort())
listen.notifyReadable(true)
numResponses= Wait_SSDP(listen, timeout)
? "Result : " result
? "SSDP Listen got"; numResponses; " responses"
end function

function Wait_SSDP(socket as Object, timeout as Integer) as Integer
numResponses = 0
elapsed = CreateObject("roTimespan")
remaining = timeout - elapsed.totalMilliseconds()
while remaining > 0
msg = wait(remaining, socket.getMessagePort())
if type(msg)="roSocketEvent"
if socket.isReadable()
results = socket.receiveStr(255)
print "SSDP Listen gets from "; socket.getReceivedFromAddress().getAddress(); ":"
print results
numResponses = numResponses + 1
end if
else
exit while 'enter code here
end if
remaining = timeout - elapsed.totalMilliseconds()
end while
return numResponses
end function

1 个答案:

答案 0 :(得分:3)

我不会说你想要做的事情是完全不可能的,但这是不切实际的。

你必须做这样的事情:

使用roStreamSockets收集UDP数据并将其作为h.264视频文件写入tmp:/,可能作为HLS块,然后通过即时写入的.m3u8文件将视频播放组件指向它。这必须在Brightscript中完成。我不确定Brightscript的速度是否足够快。我不是说这是不可能的,但Roku本身不播放多播或其他UDP视频流格式。

直播的唯一官方支持的视频格式是HLS和Microsoft Smooth。