rtp/rtsp over http的学习
要做rtp/rtsp over http, 我对http也有点了解, 以前也做过rtp/rtsp over tcp/udp传输264视频流, 但刚开始还是没有一点思路,想着把http和rtp等联系到一起, 网上这方面的资料太少, 最后实在找不到想要的资料, 于是用开源的live555工程模拟了一个数据的交互过程, 相信对要做这方面的人有很大的帮助, 至少对于我, 呵呵。 下面是交互的过程:
客户端用openrtsp来模拟, 服务器用mediaserver来模拟。
openrtsp的打印信息如下:
[root@www testProgs]# ./openRTSP -F first_ -T 80 rtsp://127.0.0.1/slamtv60.264
Opening connection to 127.0.0.1, port 80...
...remote connection opened
Requesting RTSP-over-HTTP tunneling (on port 80)
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
Sending request:
GET /slamtv60.264 HTTP/1.0
CSeq: 1
User-Agent: ./openRTSP (LIVE555 Streaming Media v2011.03.14)
x-sessioncookie: 754a0e506e8401d33572619
Accept: application/x-rtsp-tunnelled
Pragma: no-cache
Cache-Control: no-cache
Received 143 new bytes of response data.
Received a complete GET response:
HTTP/1.0 200 OK
Date: Thu, 19 Aug 1982 18:30:00 GMT
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/x-rtsp-tunnelled
Opening connection to 127.0.0.1, port 80...
...remote connection opened
Sending request:
POST /slamtv60.264 HTTP/1.0
CSeq: 1
User-Agent: ./openRTSP (LIVE555 Streaming Media v2011.03.14)
x-sessioncookie: 754a0e506e8401d33572619
Content-Type: application/x-rtsp-tunnelled
Pragma: no-cache
Cache-Control: no-cache
Content-Length: 32767
Expires: Sun, 9 Jan 1972 00:00:00 GMT
Sending request:
OPTIONS rtsp://127.0.0.1/slamtv60.264 RTSP/1.0
CSeq: 2
User-Agent: ./openRTSP (LIVE555 Streaming Media v2011.03.14)
The request was base-64 encoded to:
T1BUSU9OUyBydHNwOi8vMTI3LjAuMC4xL3NsYW10djYwLjI2NCBSVFNQLzEuMA0KQ1NlcTogMg0KVXNlci1BZ2VudDogLi9vcGVuUlRTUCAoTElWRTU1NSBTdHJlYW1pbmcgTWVkaWEgdjIwMTEuMDMuMTQpDQoNCg==
Received 152 new bytes of response data.
Received a complete OPTIONS response:
RTSP/1.0 200 OK
CSeq: 2
Date: Wed, Apr 13 2011 07:15:56 GMT
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
Sending request:
DESCRIBE rtsp://127.0.0.1/slamtv60.264 RTSP/1.0
CSeq: 3
User-Agent: ./openRTSP (LIVE555 Streaming Media v2011.03.14)
Accept: application/sdp
The request was base-64 encoded to:
REVTQ1JJQkUgcnRzcDovLzEyNy4wLjAuMS9zbGFtdHY2MC4yNjQgUlRTUC8xLjANCkNTZXE6IDMNClVzZXItQWdlbnQ6IC4vb3BlblJUU1AgKExJVkU1NTUgU3RyZWFtaW5nIE1lZGlhIHYyMDExLjAzLjE0KQ0KQWNjZXB0OiBhcHBsaWNhdGlvbi9zZHANCg0K
Received 689 new bytes of response data.
Received a complete DESCRIBE response:
RTSP/1.0 200 OK
CSeq: 3
Date: Wed, Apr 13 2011 07:15:56 GMT
Content-Base: rtsp://127.0.0.1/slamtv60.264/
Content-Type: application/sdp
Content-Length: 526
v=0
o=- 1302678956100984 1 IN IP4 192.168.77.111
s=H.264 Video, streamed by the LIVE555 Media Server
i=slamtv60.264
t=0 0
a=tool:LIVE555 Streaming Media v2011.03.14
a=type:broadcast
a=control:*
a=range:npt=0-
a=x-qt-text-nam:H.264 Video, streamed by the LIVE555 Media Server
a=x-qt-text-inf:slamtv60.264
m=video 0 RTP/AVP 96
c=IN IP4 <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><?xml:namespace prefix = st1 /><?xml:namespace prefix = st1 />0.0.0.0
b=AS:500
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=4D4033;sprop-parameter-sets=Z01AM5JUDAS0IAAAAwBAAAAM0eMGVA==,aO48gA==
a=control:track1
Opened URL "rtsp://127.0.0.1/slamtv60.264", returning a SDP description:
v=0
o=- 1302678956100984 1 IN IP4 192.168.77.111
s=H.264 Video, streamed by the LIVE555 Media Server
i=slamtv60.264
t=0 0
a=tool:LIVE555 Streaming Media v2011.03.14
a=type:broadcast
a=control:*
a=range:npt=0-
a=x-qt-text-nam:H.264 Video, streamed by the LIVE555 Media Server
a=x-qt-text-inf:slamtv60.264
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:500
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=4D4033;sprop-parameter-sets=Z01AM5JUDAS0IAAAAwBAAAAM0eMGVA==,aO48gA==
a=control:track1
Created receiver for "video/H264" subsession (client ports 50736-50737)
Sending request:
SETUP rtsp://127.0.0.1/slamtv60.264/track1 RTSP/1.0
CSeq: 4
User-Agent: ./openRTSP (LIVE555 Streaming Media v2011.03.14)
Transport: RTP/AVP/TCP;unicast;interleaved=0-1
The request was base-64 encoded to:
U0VUVVAgcnRzcDovLzEyNy4wLjAuMS9zbGFtdHY2MC4yNjQvdHJhY2sxIFJUU1AvMS4wDQpDU2VxOiA0DQpVc2VyLUFnZW50OiAuL29wZW5SVFNQIChMSVZFNTU1IFN0cmVhbWluZyBNZWRpYSB2MjAxMS4wMy4xNCkNClRyYW5zcG9ydDogUlRQL0FWUC9UQ1A7dW5pY2FzdDtpbnRlcmxlYXZlZD0wLTENCg0K
Received 171 new bytes of response data.
Received a complete SETUP response:
RTSP/1.0 200 OK
CSeq: 4
Date: Wed, Apr 13 2011 07:15:56 GMT
Transport: RTP/AVP/TCP;unicast;destination=127.0.0.1;source=127.0.0.1;interleaved=0-1
Session: 557663C7
Setup "video/H264" subsession (client ports 50736-50737)
Created output file: "first_video-H264-1"
Sending request:
PLAY rtsp://127.0.0.1/slamtv60.264/ RTSP/1.0
CSeq: 5
User-Agent: ./openRTSP (LIVE555 Streaming Media v2011.03.14)
Session: 557663C7
Range: npt=0.000-
The request was base-64 encoded to:
UExBWSBydHNwOi8vMTI3LjAuMC4xL3NsYW10djYwLjI2NC8gUlRTUC8xLjANCkNTZXE6IDUNClVzZXItQWdlbnQ6IC4vb3BlblJUU1AgKExJVkU1NTUgU3RyZWFtaW5nIE1lZGlhIHYyMDExLjAzLjE0KQ0KU2Vzc2lvbjogNTU3NjYzQzcNClJhbmdlOiBucHQ9MC4wMDAtDQoNCg==
Received a complete PLAY response:
RTSP/1.0 200 OK
CSeq: 5
Date: Wed, Apr 13 2011 07:15:56 GMT
Range: npt=0.000-
Session: 557663C7
RTP-Info: url=rtsp://127.0.0.1/slamtv60.264/track1;seq=8747;rtptime=3741659354
Started playing session
Receiving streamed data (signal with "kill -HUP 6196" or "kill -USR1 6196" to terminate)...
Received RTCP "BYE" on "video/H264" subsession (after 58 seconds)
Sending request:
TEARDOWN rtsp://127.0.0.1/slamtv60.264/ RTSP/1.0
CSeq: 6
User-Agent: ./openRTSP (LIVE555 Streaming Media v2011.03.14)
Session: 557663C7
The request was base-64 encoded to:
VEVBUkRPV04gcnRzcDovLzEyNy4wLjAuMS9zbGFtdHY2MC4yNjQvIFJUU1AvMS4wDQpDU2VxOiA2DQpVc2VyLUFnZW50OiAuL29wZW5SVFNQIChMSVZFNTU1IFN0cmVhbWluZyBNZWRpYSB2MjAxMS4wMy4xNCkNClNlc3Npb246IDU1NzY2M0M3DQoNCg==
Received a complete TEARDOWN response:
RTSP/1.0 200 OK
CSeq: 6
Date: Wed, Apr 13 2011 07:16:54 GMT
mediaserver的打印信息如下:
rtRTSPClientSession[0x8f05890]::handleRequestBytes() read 224 new bytes:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
GET /slamtv60.264 HTTP/1.0
CSeq: 1
User-Agent: ./openRTSP (LIVE555 Streaming Media v2011.03.14)
x-sessioncookie: 754a0e506e8401d33572619
Accept: application/x-rtsp-tunnelled
Pragma: no-cache
Cache-Control: no-cache
RTSPClientSession[0x8f0a800]::handleRequestBytes() read 457 new bytes:
POST /slamtv60.264 HTTP/1.0
CSeq: 1
User-Agent: ./openRTSP (LIVE555 Streaming Media v2011.03.14)
x-sessioncookie: 754a0e506e8401d33572619
Content-Type: application/x-rtsp-tunnelled
Pragma: no-cache
Cache-Control: no-cache
Content-Length: 32767
Expires: Sun, 9 Jan 1972 00:00:00 GMT
T1BUSU9OUyBydHNwOi8vMTI3LjAuMC4xL3NsYW10djYwLjI2NCBSVFNQLzEuMA0KQ1N
lcTogMg0KVXNlci1BZ2VudDogLi9vcGVuUlRTUCAoTElWRTU1NSBTdHJlYW1pbmcgTWVka
WEgdjIwMTEuMDMuMTQpDQoNCg==
RTSPClientSession[0x8f05890]::handleRequestBytes() read 164 new bytes:
T1BUSU9OUyBydHNwOi8vMTI3LjAuMC4xL3NsYW10djYwLjI2NCBSVFNQLzEuMA0KQ1Nl
cTogMg0KVXNlci1BZ2VudDogLi9vcGVuUlRTUCAoTElWRTU1NSBTdHJlYW1pbmcgTWVkaW
EgdjIwMTEuMDMuMTQpDQoNCg==
RTSPClientSession[0x8f05890]::handleRequestBytes() read 196 new bytes:
REVTQ1JJQkUgcnRzcDovLzEyNy4wLjAuMS9zbGFtdHY2MC4yNjQgUlRTUC8xLjANCkNTZX
E6IDMNClVzZXItQWdlbnQ6IC4vb3BlblJUU1AgKExJVkU1NTUgU3RyZWFtaW5nIE1lZGlhIHYy
MDExLjAzLjE0KQ0KQWNjZXB0OiBhcHBsaWNhdGlvbi9zZHANCg0K
RTSPClientSession[0x8f05890]::handleRequestBytes() read 232 new bytes:
U0VUVVAgcnRzcDovLzEyNy4wLjAuMS9zbGFtdHY2MC4yNjQvdHJhY2sxIFJUU1AvMS4wDQp
DU2VxOiA0DQpVc2VyLUFnZW50OiAuL29wZW5SVFNQIChMSVZFNTU1IFN0cmVhbWluZyBN
ZWRpYSB2MjAxMS4wMy4xNCkNClRyYW5zcG9ydDogUlRQL0FWUC9UQ1A7dW5pY2FzdDtpb
nRlcmxlYXZlZD0wLTENCg0K
RTSPClientSession[0x8f05890]::handleRequestBytes() read 212 new bytes:
UExBWSBydHNwOi8vMTI3LjAuMC4xL3NsYW10djYwLjI2NC8gUlRTUC8xLjANCkNTZXE6IDU
NClVzZXItQWdlbnQ6IC4vb3BlblJUU1AgKExJVkU1NTUgU3RyZWFtaW5nIE1lZGlhIHYyMDExLjA
zLjE0KQ0KU2Vzc2lvbjogNTU3NjYzQzcNClJhbmdlOiBucHQ9MC4wMDAtDQoNCg==
RTSPClientSession[0x8f05890]::handleRequestBytes() read 192 new bytes:
VEVBUkRPV04gcnRzcDovLzEyNy4wLjAuMS9zbGFtdHY2MC4yNjQvIFJUU1AvMS4wDQpDU2VxO
iA2DQpVc2VyLUFnZW50OiAuL29wZW5SVFNQIChMSVZFNTU1IFN0cmVhbWluZyBNZWRpYSB2
MjAxMS4wMy4xNCkNClNlc3Npb246IDU1NzY2M0M3DQoNCg==
完!
2012年5月
rtp/rtsp over http的学习的更多相关文章
- RTMP/RTP/RTSP/RTCP的区别
RTCP RTMP/RTP/RTSP/RTCP的区别 http://blog.csdn.net/frankiewang008/article/details/7665547 流媒体协议介绍(rtp/r ...
- send/receive h264/aac file/data by rtp/rtsp over udp/tcp
一.安装一些必要的调试工具 1.vlc安装sudo apt-get install vlcsudo apt-get install vlc-nox 2.ffmpeg安装,带ffplay,ffplay依 ...
- 【转】RTMP/RTP/RTSP/RTCP协议对比与区别介绍
用一句简单的话总结:RTSP发起/终结流媒体.RTP传输流媒体数据 .RTCP对RTP进行控制,同步. 之所以以前对这几个有点分不清,是因为CTC标准里没有对RTCP进行要求,因此在标准RTSP的代码 ...
- RTP/RTSP编程
https://blog.csdn.net/pu1030/article/details/7619908 http://blog.chinaunix.net/uid-27875-id-5017161. ...
- VOIP RTP RTSP 实现 Baresip 源码分析
RTP 使用 udp 进行数据传输,udp 是不能保证,数据包一定可以到达的,也不提供时序.同时还有 MTU 限制. RTCP 用来配合 RTP 提供,传输报告,会话建立和退出. 一大批参考规范 * ...
- (转)live555 RTSP Server RTP over TCP BUG
最近碰到一个非常棘手的问题,NVR通过ONVIF协议接入IPC进行录像,在录像时,会发现其中有个别IPC会出现录像断断续续的情况.这种情况很难复现,但是这种情况一旦出现,整个过程会一直持续很长时间,一 ...
- Managed Media Aggregation using Rtsp and Rtp
his article was written almost 2 years ago, it's content may not reflect the latest state of the cod ...
- FFMPEG学习----打印视频信息
FFMPEG学习资料少之又少,在此推荐雷神的博客: http://blog.csdn.net/leixiaohua1020 在这里,我们把打印视频里的相关信息作为学习FFMPEG的 Hello Wor ...
- 关于ios对rtsp格式的流媒体支持的一些官方说明
ios明确不支持rtsp格式的流媒体,基于rtsp/rtp对通用性和防炎墙以及需要开新端口等额外影响稳定性和通用性的原因. 而对http流的视频支持是最好的.虽然有第三方的方式配合ffmpeg库,实现 ...
随机推荐
- webpack使用时可能出现的问题
1.在配置完webpack.config.js准备进行热加载开发时,修改React内容浏览器不会自动局部刷新,而且会console出一些提示: The following modules couldn ...
- python 基础篇 04(列表 元组 常规操作)
本节主要内容:1. 列表2. 列表的增删改查3. 列表的嵌套4. 元组和元组嵌套5. range 一. 列表1.1 列表的介绍列表是python的基础数据类型之一 ,其他编程语言也有类似的数据类型. ...
- CodeForces-1121C System Testing
题目链接 https://vjudge.net/problem/CodeForces-1121C 题面 Description Vasya likes taking part in Codeforce ...
- 问题 A: 完数
问题 A: 完数 时间限制: 1 Sec 内存限制: 32 MB提交: 252 解决: 178[提交][状态][讨论版][命题人:外部导入] 题目描述 求1-n内的完数,所谓的完数是这样的数,它的 ...
- z 变换
1. z 变换 单位脉冲响应为 \(h[n]\) 的离散时间线性时不变系统对复指数输入 \(z^n\) 的响应 \(y[n]\) 为 \[ \tag{1} y[n] = H(z) z^{n}\] 式中 ...
- pta编程(1-8)
知识点:本次编程运用到的格式 #include<stdio.h> int main(void) { printf(); return 0; } 过程:1-3.没什么问题,就是注意字符的输入 ...
- (转)MongoDB numa系列问题三:overcommit_memory和zone_reclaim_mode
内核参数overcommit_memory : 它是 内存分配策略 可选值:0.1.2.0:表示内核将检查是否有足够的可用内存供应用进程使用:如果有足够的可用内存,内存申请允许:否则,内存申请失败,并 ...
- [剑指Offer] 28.数组中出现次数超过一半的数字
[思路]将每个数字都存入map中作为key值,将它们出现的次数作为value值,当value超过一半时则返回其key值. class Solution { public: int MoreThanHa ...
- Delphi中取得程序版本号
Delphi做的程序,如果想包含版本信息, 必须在Delphi的集成编辑环境的菜单“Project/Options/Version Info”里面添加版本信息.即在Version Info 选项卡中选 ...
- Redis使用手册
简介 Redis 是一个开源的使用 ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志型. Key-Value数据库. Redis面向互联网的方案提供了三种形式: 1.主从 主机进行写操作, ...