在Java中实现RTSP媒体服务器

8
我正在尝试在Java中实现一个简单的RTSP服务器,该服务器将使用Android手机作为接收客户端。我已经在互联网上搜索了很多答案,并且多次返回到这个网站。通过这个过程,我发现JMF在服务器端不支持RTSP,并且必须使用NIO框架(如Netty、Xuggler、Mina等)扩展Java。我的唯一问题是,在搜索这些网站的文档后,我没有找到任何关于如何实现RTSP的基本示例。
我的问题是:有没有人遇到这个问题并解决了它?如果是这样,请指向一些有用的源代码或文档。请注意,我已经查看了此站点上的所有相关线程,并跟进了大多数链接,但没有任何结果。我不是Java新手,我理解所有流媒体协议,但我是Java中流媒体实现的新手。
谢谢。

我不明白问题所在。你不知道如何实现RTSP吗?RTSP与HTTP相同。它是基于文本的,有文本请求和文本响应。您应该像任何其他服务器一样实现服务器(多线程)。在这里:http://www.ietf.org/rfc/rfc2326.txt,您可以找到所有需要的内容(所有请求,所有响应),在这里http://tools.ietf.org/html/rfc4566,您可以看到如何构建SDP消息...但我不明白问题所在?你能更具体地说明吗?你想要流什么? - Cipi
嗨,感谢回复。我想以Android操作系统允许的设置格式流式传输视频和音频。我已经阅读了RTSP的RFC并理解了协议的工作原理。当我在尝试使用Java Media Frame时,我发现有一些控制RTP和RTCP会话的类,但没有针对RTSP的类。我也知道RTSP可以与其他各种协议一起使用,例如HTTP,但我特别寻找基于UDP的RTP,因为我认为它最适合流式传输。我真的只想知道如何使用Java成功地向RTSP客户端提供视频和音频的方法。 - user673090
那么为什么选择Java呢?不使用例如Darwin流媒体服务器之类的东西呢? - ThomasRS
你是否意识到VLC媒体播放器可以作为各种流协议(如RTSP、UDP、HTTP、MMS)的流媒体服务器?一些Java项目已经在Java中应用了VLC引擎(libVLC库和VLC媒体播放器使用的插件),例如VLCJ。 - ecle
2个回答

3
很难回答你的问题...我只能给你一些基本建议: - 开始你的工作,先做一个小的 POC 来掌握 Java 网络编程的技巧。 - 阅读一些开源的 TCP/IP 服务器实现源代码,例如 Jetty/Tomcat/Jboss 等。 - 尝试考虑你的架构是否符合开放封闭原则(能够支持新的流编解码器等)。 - 尝试根据你的约束条件和使用网络带宽来定位预期的并行用户会话量。
客户端影响不大,RTSP 协议类似于 REST,因此您无需维护用户上下文...只需简单地回答传入请求即可。这似乎是一个非常简单的情况...这个协议似乎不是很丰富(具有非常受限制的命令集)... 尝试阅读一些不同客户端的源代码。我建议您获取一个标准 Linux 播放器的源代码:
1. VLC 2. mplayer 3. xine 你可能会在这些产品中找到非常有用的代码... 我猜那些实现商业产品的人将无法给出他们的反馈,所以请使用开源软件!!!
希望对你有帮助 Jerome

2

我认为JMF包含RTP/RTCP类的原因是这些协议属于媒体协议,即这些协议描述了如何通过IP流式传输媒体以及如何报告流质量。

RTSP是一个控制协议,用于设置媒体流。因此,它在JMF管理的媒体流之上的一层。你可以在任何你喜欢的通道中交换RTSP消息,然后使用交换的信息来建立媒体流。

尝试在谷歌代码项目中搜索RTSP实现,看起来有一些实现。


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