2016-02-12 241 views
0

我知道这个话题不是一件容易的事,但我正在寻找一个Java类来将HLS流从服务器发送到客户端。Java,服务HLS实时视频流

我所生成的文件越来越大:

out.m3u8 
out0.ts 
out1.ts 
out2.ts 
out3.ts 
out4.ts 
out5.ts 
out6.ts 

这是使用的ffmpeg从原始来源产生:

ffmpeg -i http://sourceurl.com:9981/stream/channel/1232131 out.m3u8 

我可以使用VLC播放。

不知何故,我需要将这个流到客户端。

在这一点上,我并不关心不同的比特率,我只是想在移动浏览器和桌面浏览器上进行直播。

我发现这个类:

https://github.com/Red5/red5-hls-plugin/blob/master/plugin/src/main/java/org/red5/stream/http/servlet/PlayList.java 

这可能会做这样的事情。

我已将hls.js引入我的应用程序,希望将其用于桌面系统。

但是HLS应该在没有hls.js的情况下使用IOS设备。

应该如何从服务器提供HLS内容?很难找到一个好的简单的例子来做到这一点。

任何人都知道要做到这一点的步骤?

我已经研究了Wowza和Red5只是一点点,但不确定他们可以在这个阶段为我提供什么,似乎是设置过于复杂,只为服务一些文件。但请向我解释为什么不是这样。

回答

3

HLS中的H代表HTTP。 HLS DASH HDS流畅流媒体等流媒体技术的重点在于不需要专门的服务器。只是简单的HTTP。你可以使用类似nginx的东西,或任何可用于Java或任何其他语言的HTTP服务器类/库。

+0

你介意阐述吗?所以通常我会得到像out.m3u8文件,然后滚出out10.ts out11.ts等文件...我需要以某种方式打开它们并将它们提供给客户端。它只是简单地提供字节,并且当一个字节中没有更多字节时,继续下一个字节?或者我需要阅读out.m3u8并处理某种协议?我不确定是否诚实,但我想用java而不是nginx来完成控制。 – momomo

+1

你不对文件做任何事情。只要举办他们。通过http发布指向m3u8文件的链接。播放器将会根据需要执行http获取并提取文件。 – szatmary

+0

这个人想通过HLS流“live”标准的HTTP服务器不这样做。 Red5允许您流式传输到服务器,并通过HLS提供服务,实际上Red5 Pro在工作包中有这个功能。 –