在Java中流式传输视频

31

如何最佳地记录和流式传输实时视频给多个客户端?是否有相关的库可供使用?

3个回答

24

Xuggler是一个不错的开源Java库,可处理即时流媒体和修改。

http://www.xuggle.com/xuggler/

你可以使用它与Red5一起使用,或者如果您想要完全控制,则 Xuggler有一个IContainer类,每个实例都可以设置为流式传输媒体。我能够通过UDP和TCP/IP重新流式传输媒体。

此外,Xuggler会自动拆分各种流供您分析/修改(视频、音频、元数据),并使用FFMPEG构建(有大量开箱即用的编解码器)=)。


3
请问您能否提供一个Java和Xuggler的视频流(rtsp,http)示例,不使用Red5?谢谢! - javment
@Teddy Yueh - 我也非常希望能够看到没有使用red5的示例。 - Grammin
1
我现在没有太多时间,但可以给你一些指示。使用带有方向 out 的 IContainer。至于流,您可以传入一个 ByteArrayOutputStream 并保留对它的引用。当您将数据包写入 IContainer 时,您的 ByteArrayOutputStream 将填充,因此在每个数据包被写入后,刷新 IContainer,然后将字节传递给 DatagramPacket(如果您想要 UDP)。如果您想要 TCP/IP,则只需将 Socket 的 OutputStream 传递给 IContainer 即可。在任何协议中,您只需要访问字节即可。如果您正在使用 ByteArrayOutputStream,请不要忘记在每次提取后清除它。 - Teddy Yueh

7
如果你想冒险尝试其他可能性,我的全新、闪亮的基于WebM的直播流媒体服务器stream.m也是一个选择。它采用GPL许可证,提供完整源代码。你可以使用支持HTML5的浏览器作为客户端。
目前服务器端还没有录制功能,但你可以在广播端以千种方式保存流。

2

了解亚马逊 EC2 的流媒体服务 CloudFront。如果您想要向大量客户分发内容,弹性云技术在成本方面胜过任何其他实现方式,并且可以很容易地用 Java 实现。

http://aws.amazon.com/cloudfront/

他们为开发人员提供了非常有帮助的文档,而且提供的内容传递价格极为实惠,轻松击败了自行设置内部解决方案的成本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接