RTSP

什么是RTSP?
Real-Time Stream Protocol
用于建立的控制媒体流的传输,本身并不用于转送媒体流数据。媒体数据的传送通过RTP/RTCP等协议来完成。

具体过程:
客户端:OPTION,查询服务器端可用方法
服务器:回应服务器提供的可用的方法
客户端:DESCRIBE,发起DESCRIBE请求,得到媒体描述信息
服务器:回应一个SDP会话描述文件,描述要发送的媒体内容,包括视频音频的信息。
客户端:SETUP请求,建立RTSP会话,并确定传输模式。
服务器:响应SETUP请求,当使用TCP的时候默认只使用TCP的554端口,当使用UDP的时候分配两个UDP端口分别发送RTP数据和RTCP信息。(在防火墙比较复杂的场景下,最好是把传输模式设置为TCP)
客户端:PLAY,请求开始传送数据
服务器:响应并开始发送RTP数据
客户端:TEARDOWN,提醒服务器停止传输
服务器:响应Close

数据包:
就是RTP数据包。

它的缺点是什么?
需要插件播放。

什么是RTMP?
Real Time Messaging Protocol
Adobe Systems公司为Flash Player和服务器之间音视频和数据传输开发的私有协议。

具体过程:

HandShake:
客户端发送C0、C1块
服务器收到C0或C1后发送S0和S1
客户端收齐S0和S1后,发送C2。服务器收齐C0和C1后,发送S2,
客户端和服务器分别收到S2和C2后,握手完成。

NetConnection:
客户端:发送命令消息中的连接(connect),建立连接
服务器:发送确认窗口大小协议(Window Acknowledgement Size)消息到客户端,同时连接到连接命令中提到的应用程序。
服务器:发送设置带宽协议(Set Peer Bandwidth)消息。
客户端:处理设置带宽协议消息后,发送确认窗口大小(Window Acknowledgement Size)协议消息。
服务器:发送用户控制消息中的“流开始”(Stream Begin)消息。
服务器:发送命令消息中的“结果”(_result),通知客户端连接的状态

NetStream:
客户端:发送命令消息中的“创建流”(createStream)
服务器:发送命令消息中的“结果”(_result),通知客户端流的状态。

Play:
客户端:发送命令消息中的“播放”(play)命令
服务器:发送设置块大小(ChunkSize)协议消息。
服务器:发送用户控制消息中的“streambegin”,告知客户端流ID。
服务器:播放命令成功的话,发送命令消息中的“响应状态”onStatus-play reset和 onStatus-play start,告知客户端“播放”命令执行成功。

数据包:
基本的数据单元称为消息(Message),传输数据的时候,消息会被拆分成更小的单元,称为消息块(Chunk)。Message Type ID在1-7的消息用于协议控制,这些消息一般是RTMP协议自身管理要使用的消息,用户一般情况下无需操作其中的数据。Message Type ID为8,9的消息分别用于传输音频和视频数据。Message Type ID为15-20的消息用于发送AMF编码的命令,负责用户与服务器之间的交互,比如播放,暂停等等。

他的优点是什么?
他爹是adobe;
工作在TCP之上,默认使用1935端口;

rtsp转rtmp的思路
RTSP直播流的读取。
H.264和AAC编码数据的分析处理。
RTMP数据包封装。
RTMP推送协议。

05-08
### RTSP协议概述 RTSP(Real Time Streaming Protocol)是一种应用层协议,用于一对多应用程序通过IP网络有效传送多媒体数据[^1]。它类似于HTTP协议,但专为流媒体设计,支持播放、暂停、快进等功能。 #### 协议结构与功能 RTSP本身并不负责实际的数据传输,而是依赖于其他协议来完成这一任务。通常情况下,RTSP会将具体的媒体数据交由RTP(Real-time Transport Protocol)进行传输,而RTCP(Real-time Control Protocol)则负责监控服务质量并管理会话成员[^2]。 以下是RTSP的主要特点及其与其他相关协议的关系: - **控制功能**:RTSP允许客户端对服务器上的流媒体资源执行诸如`PLAY`、`PAUSE`、`TEARDOWN`等操作。 - **状态维护**:RTSP可以维持长时间的状态连接,这使得它可以更好地适应交互式的媒体应用场景。 - **扩展性**:由于其基于文本的设计理念,RTSP非常容易被扩展以满足新的需求。 #### 基本使用流程 当利用RTSP协议访问流媒体时,一般遵循以下几个逻辑阶段(注意这里不采用步骤词汇表述方式): 建立连接之后发送描述请求获取媒体信息;随后设置传输参数准备接收数据流;最后启动播放过程直至结束整个会话。 ##### 描述阶段 (DESCRIBE) 此阶段涉及向服务器发出一个`DESCRIBE`命令,目的是获得关于目标媒体的信息,这些信息通常封装在一个SDP(Session Description Protocol)消息体内返回给客户机。 ```http DESCRIBE rtsp://server.example.com/media.mp4 RTSP/1.0 CSeq: 1 Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== Accept: application/sdp ``` ##### 设置阶段 (SETUP) 一旦知道了媒体特性,在正式开始播放之前还需要配置好相应的传输机制。这是通过`SETUP`指令实现的,其中指定了希望使用的传输模式以及可能的相关选项比如端口号等等。 ```http SETUP rtsp://server.example.com/media.mp4/trackID=1 RTSP/1.0 CSeq: 3 Transport: RTP/AVP;unicast;client_port=8000-8001 ``` ##### 播放阶段 (PLAY) 完成了前期准备工作以后就可以下达`PLAY`指示让服务器开始推送音视频帧过来供本地解码显示了。 ```http PLAY rtsp://server.example.com/media.mp4 RTSP/1.0 CSeq: 5 Session: 1234ABCD Range: npt=0- ``` 以上展示了典型的RTSP交互过程中几个重要环节的例子。 ### 示例代码片段 下面给出一段简单的Python脚本来演示如何构建基本的RTSP客户端行为框架: ```python import socket def send_rtsp_request(method, url, seq_num, session_id=None): request = f"{method} {url} RTSP/1.0\r\n" request += f"CSeq: {seq_num}\r\n" if method == 'SETUP': request += "Transport: RTP/A
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值