用 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 将实时视频流式传输到网页的最佳方法
我们可以使用 j2me(java) 流式传输和观看 youtube 视频吗