我正在考虑开发一个流媒体服务器,我有以下问题,通过RTSP(例如网址:rtsp://192.168.0.184/myvideo.mpg
)或RTP
(例如网址:rtp://192.168.0.184
)。< / p>
据我了解,RTSP
服务器主要用于流式传输已存在的文件,即不是实时文件。 RTP
服务器用于广播。
如果我错了,有人会纠正我,我是对的吗?
我想开发一台服务器来在计算机屏幕上播放实时内容,即在流媒体播放时显示的内容。
答案 0 :(得分:84)
您遇到了错误... RTSP是一种实时流媒体协议。意思是,您可以实时传输任何您想要的内容。因此,您可以使用它来流式传输实况内容(无论是什么,视频,音频,文本,演示......)。 RTP是一种传输协议,用于传输通过RTSP协商的媒体数据。
您使用RTSP控制RTP上的媒体传输。你用它来设置,播放,暂停,拆除流......
因此,如果您希望服务器在请求URL时才开始流式传输,则可以实现某种RTP服务器。但是如果你想要更多的控制,如果你要直播视频,你必须使用RTSP,因为它传输SDP和其他重要的解码数据。
阅读我在这里链接的文件,它们是一个很好的起点。
答案 1 :(得分:15)
AFAIK,RTSP根本不传输流,它只是一个带有PLAY和STOP等功能的带外控制协议。
UDP上的原始UDP或RTP是流的传输协议,就像原始TCP或TCP上的HTTP一样。
为了能够通过给定的传输协议流式传输某个程序,必须为容器格式定义封装方法。例如,TS容器可以通过UDP传输,但Matroska不能。
几乎所有东西都可以通过TCP传输。
(您使用编解码器的事实也间接地起因为它限制了您可以使用的容器格式。)
答案 2 :(得分:11)
一些基础知识:
RTSP服务器可用于死源以及实时源。 RTSP协议为您提供命令(如您的VCR Remote),功能取决于您的实现。
RTP是用于实时传输音频和视频的实时协议。使用的传输可以是单播,多播或广播,具体取决于传输地址和端口。除了传输RTP之外,还有很多东西可以帮助你实现打包,重新排序,抖动控制,QoS,支持Lip同步......
在您的情况下,如果您想要广播流媒体服务器,那么您需要RTSP(用于控制)以及RTP(广播音频和视频)
首先,您可以查看live555
提供的示例代码答案 3 :(得分:4)
我认为这是正确的。 RTSP可以在内部使用RTP。
答案 4 :(得分:3)
我听到你的痛苦。我现在正在经历这个(多年后)。 根据我所学到的,您可以将RTSP视为&#34; VCR控制器&#34;,该协议允许您指定要播放的流(演示文稿),然后它会向您发送描述媒体,然后您可以使用RTSP播放,停止,暂停和录制远程流。媒体本身就是RTP。 RTSP通常在不同的套接字或通信层上实现。虽然它只是一种协议,但大多数情况下它是由服务器通过套接字实现的。对于直播流,您请求的RTSP流只是流的名称。它不需要引用服务器上的文件,服务器的RTSP实现可以解析该流,将实时图放在一起,然后为该流名提供SDP(描述)。但是,这当然特定于RTSP服务器的实现方式。对于&#34;直播&#34;流,它可能只是使用RTP更简单,但您需要一种方法将SDP从RTP服务器传输到想要播放该流的客户端。
答案 5 :(得分:0)
RTP 是实时数据的传输协议。它提供时间戳、序列号和其他方法来处理实时数据传输中的计时问题。
RTSP 是一种控制协议,用于启动和指导从媒体服务器传输流式多媒体数据。它是“Internet VCR 远程控制协议”。它的作用是提供遥控器;然而,实际的数据交付是单独完成的,很可能是通过 RTP 完成的。
此外,RTCP 是 RTP 的控制部分,有助于服务质量和会员管理。
这三个相关协议用于互联网上的实时多媒体数据。在此链接中阅读出色的完整文档:RTP, RTCP & RTSP
答案 6 :(得分:-1)
RTSP(实际上是RTP)可用于流式视频,但也可用于许多其他类型的媒体,包括实时演示。 Rtsp只是用于设置RTP会话的协议。
有关所有详细信息,您可以在以下地址查看我的开源RTSP Server实施:https://net7mma.codeplex.com/
或者我的文章@ http://www.codeproject.com/Articles/507218/Managed-Media-Aggregation-using-Rtsp-and-Rtp
它支持重新获取流以及流的动态创建,实现了各种RFC,并且该库实现了更好的性能和更少的内存,然后是FFMPEG以及传输层中的任何其他解决方案,从而使它是一个很好的候选者,可以用作大多数场景的集中访问点。