1

我试图加入 igmp 直播并在 roku box 中播放。但它没有奏效。是不是我们不能在 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
4

1 回答 1

3

我不会说您尝试做的事情是完全不可能的,但这是不切实际的。

你必须做这样的事情:

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

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

于 2014-10-29T21:38:02.183 回答