用 Java 流式传输视频

Posted

技术标签:

【中文标题】用 Java 流式传输视频【英文标题】:Stream video in Java 【发布时间】:2011-07-31 06:08:57 【问题描述】:

向许多客户录制和流式传输实时视频的最佳方式是什么?有图书馆吗?

【问题讨论】:

【参考方案1】:

Xuggler 是一个很好的开源 Java 库,它处理动态流和修改媒体。

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

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

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

【讨论】:

你能告诉我一个例子,从 java 和 xuggler 流式传输视频(rtsp,http),不使用 red5 吗?谢谢! @Teddy Yueh - 我也非常想要一个不使用 red5 的例子 我现在没有太多时间,但可以给你一些指示。使用带方向的 IContainer。至于流,您可以传入一个 ByteArrayOutputStream 并保留它的句柄。当您将数据包写入 IContainer 时,您的 ByteArrayOutputStream 将被填满,因此在每个数据包写入后,刷新 IContainer,然后如果您需要 UDP,则将字节传递给 DatagramPacket。如果你想要 TCP/IP,它就像将 Socket 的 OutputStream 传递给 IContainer 一样简单。在任何协议中,您只需要访问字节。如果您使用的是 ByteArrayOutputStream,请不要忘记在每次拉取后清除它。【参考方案2】:

如果您喜欢冒险,另一种可能性是我非常新的、闪亮的基于 WebM 的实时流媒体服务器 stream.m。它是 GPL 许可的,提供完整的源代码。您可以将支持 html5 的浏览器用作客户端。

服务器端还没有录制能力,但是你可以在广播端以千种方式保存流。

【讨论】:

【参考方案3】:

查看 Amazon EC2 的流媒体服务 CloudFront。如果您尝试将内容分发给大量客户端,则弹性云在成本方面胜过任何其他实现方式,并且可以轻松地用 Java 实现。

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

他们为开发人员提供了非常有用的文档,并且内容交付的价格非常合理,这很容易超过建立内部解决方案的成本。

【讨论】:

以上是关于用 Java 流式传输视频的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python/C++/Java 将实时视频流式传输到网页的最佳方法

流式传输 Youtube 视频

我们可以使用 j2me(java) 流式传输和观看 youtube 视频吗

随着时间的推移,使用 java websockets 实时流式传输模拟视频变得无响应

在 android 视频视图中流式传输视频

使用 ffmpeg 将低延迟 RTSP 视频流式传输到 android