2014-10-20 58 views
1

我试图加入igmp直播并在roku盒中播放。但它没有奏效。 难道我们无法在Roku框中加入组播流? 如果可以通过HLS完成,那么解决方案是什么? 我试图在链接在GitHub上的参考:https://github.com/thetrime/trimeplay/blob/master/source/trimeplay.brs 请参考我用作为参考另一个代码:直播(部分频道)通过Roku Box播放

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 

回答

3

我不会说,你正在尝试做的是完全不可能的,但它是不切实际的。

你将不得不做一些有点像这样:

使用roStreamSockets收集UDP数据并将它写入tmp下:/为H.264的视频文件,可能是因为HLS块,再点视频播放组件在它通过.m3u8文件,你也写在飞。这必须在Brightscript中完成。我不确定Brightscript是否足够快。我并不是说这样做是不可能的,但是Roku本身不会播放多播或其他UDP视频流格式。

直播正式支持的视频格式是HLS和Microsoft Smooth。

+0

不会请你添加它吗? (UDP流的玩法)可爱 – nhed 2016-06-18 19:59:53