一步步了解RTSP

什么是RTSP协议

RTSP 是一种基于文本的应用层协议,在语法及一些消息参数等方面,RTSP 协议与HTTP协议类似。

RTSP 被用于建立的控制媒体流的传输,它为多媒体服务扮演“网络远程控制”的角色。尽管有时可以把RTSP控制信息和媒体数据流交织在一起传送,但一般RTSP本身并不用于传送媒体流数据。媒体数据的传送可通过RTP/RTCP等协议来完成。

使用live555 搭建RTSP 流服务器

  1. 下载live555的源码

  2. 编译方式

    ./genMakefiles <os-platform>
    # <os-platform>是运行的目标平台。可用是“linux” 或者 “solaris”,亦或者是 config.<os-platform> 文件
    make
    
  3. 编译完成后,会生成文件 mediaServer/live555MediaServer

  4. 执行结果
    在这里插入图片描述

  5. 将准备好的视频文件放到和 live555MediaServer同级目录

  6. 然后通过VLC,打开网络串流,输入地址,即可播放
    在这里插入图片描述7. 在使用 live555MediaServer有一些坑需要注意。

    1. 它不支持FLV 格式
    2. 如果你的视频文件后缀为.h264,将修改后缀名为.264

RTSP 客户端和服务器交互过程

下面使用wireshark进行抓包捕获出来的数据

在这里插入图片描述

OPTION

目的得到服务器提供的可用方法

在这里插入图片描述

OPTIONS rtsp://192.168.0.104:8554/cuc_ieschool.mkv RTSP/1.0
CSeq: 2
User-Agent: LibVLC/3.0.11 (LIVE555 Streaming Media v2016.11.28)

服务器返回指令

在这里插入图片描述

RTSP/1.0 200 OK
CSeq: 2
Date: Fri, Nov 20 2020 06:18:23 GMT
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER

DESCRIBE

客户端向服务器请求媒体会话的描述信息(SDP)

在这里插入图片描述

DESCRIBE rtsp://192.168.0.104:8554/cuc_ieschool.mkv RTSP/1.0
CSeq: 3
User-Agent: LibVLC/3.0.11 (LIVE555 Streaming Media v2016.11.28)
Accept: application/sdp

服务器回应媒体的描述信息

在这里插入图片描述

RTSP/1.0 200 OK
CSeq: 3
Date: Fri, Nov 20 2020 06:18:23 GMT
Content-Base: rtsp://192.168.0.104:8554/cuc_ieschool.mkv/
Content-Type: application/sdp
Content-Length: 921

v=0
o=- 1605853103856016 1 IN IP4 192.168.0.104
s=Matroska video+audio+(optional)subtitles, streamed by the LIVE555 Media Server
i=cuc_ieschool.mkv
t=0 0
a=tool:LIVE555 Streaming Media v2020.11.20
a=type:broadcast
a=control:*
a=range:npt=0-34.233
a=x-qt-text-nam:Matroska video+audio+(optional)subtitles, streamed by the LIVE555 Media Server
a=x-qt-text-inf:cuc_ieschool.mkv
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:500
a=rtpmap:96 H265/90000
a=fmtp:96 profile-space=0;profile-id=1;tier-flag=0;level-id=63;interop-constraints=800000000000;sprop-vps=QAEMAf//AWAAAAMAgAAAAwAAAwA/lcCQ;sprop-sps=QgEBAWAAAAMAgAAAAwAAAwA/oAQCASFlleSTK8BAQAAAAwBAAAADA8I=;sprop-pps=RAHBc9GJ
a=control:track1
m=audio 0 RTP/AVP 97
c=IN IP4 0.0.0.0
b=AS:96
a=rtpmap:97 MPEG4-GENERIC/44100/2
a=fmtp:97 streamtype=5;profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1210
a=control:track2

SETUP

客户端提醒服务器建立会话,并确定传输方式

在这里插入图片描述

SETUP rtsp://192.168.0.104:8554/cuc_ieschool.mkv/track1 RTSP/1.0
CSeq: 4
User-Agent: LibVLC/3.0.11 (LIVE555 Streaming Media v2016.11.28)
Transport: RTP/AVP;unicast;client_port=64272-64273

服务器回应请求的信息

在这里插入图片描述

RTSP/1.0 200 OK
CSeq: 4
Date: Fri, Nov 20 2020 06:18:23 GMT
Transport: RTP/AVP;unicast;destination=192.168.0.106;source=192.168.0.104;client_port=64272-64273;server_port=6970-6971
Session: 7E144F3E;timeout=65

PLAY

客户端发起播放请求

在这里插入图片描述

PLAY rtsp://192.168.0.104:8554/cuc_ieschool.mkv/ RTSP/1.0
CSeq: 6
User-Agent: LibVLC/3.0.11 (LIVE555 Streaming Media v2016.11.28)
Session: 7E144F3E
Range: npt=0.000-

服务器回应播放动作

在这里插入图片描述

RTSP/1.0 200 OK
CSeq: 6
Date: Fri, Nov 20 2020 06:18:23 GMT
Range: npt=0.000-
Session: 7E144F3E
RTP-Info: url=rtsp://192.168.0.104:8554/cuc_ieschool.mkv/track1;seq=3511;rtptime=3738703622,url=rtsp://192.168.0.104:8554/cuc_ieschool.mkv/track2;seq=23953;rtptime=1552829022

PAUSE

客户端请求服务器暂停

在这里插入图片描述

PAUSE rtsp://192.168.0.104:8554/cuc_ieschool.mkv/ RTSP/1.0
CSeq: 118
User-Agent: LibVLC/3.0.11 (LIVE555 Streaming Media v2016.11.28)
Session: 7E144F3E

服务器收到并回复

在这里插入图片描述

RTSP/1.0 200 OK
CSeq: 118
Date: Fri, Nov 20 2020 08:13:07 GMT
Session: 7E144F3E

TEARDOWN

客户端发起关闭请求

TEARDOWN rtsp://192.168.0.104:8554/cuc_ieschool.mkv/ RTSP/1.0
CSeq: 137
User-Agent: LibVLC/3.0.11 (LIVE555 Streaming Media v2016.11.28)
Session: 7E144F3E

在这里插入图片描述

服务器响应客户端

在这里插入图片描述

RTSP/1.0 200 OK
CSeq: 137
Date: Fri, Nov 20 2020 08:30:01 GMT

RTSP 重要头字段参数

Accept

用于指定客户端可用接受的媒体描述信息类型

CSeq

指定了RTSP 请求/回应的序列号,在每个请求或回应中都必须包含这个头字段。对每个包含一个给定序列号的请求消息,都会有一个相同序列号的回应消息。

Rang

用于指定一个时间范围

Session

Session 头字段标识了一个RTSP 会话。Session ID 是由服务器在SETUP 的回应中选择的,客户端一当得到 Session ID 后,在以后的对Session 的操作请求中都要包含 Session ID。

Transport

Transport 头字段包含客户端可用接受的传输选项列表,包括传输协议,地址端口

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值