来研究一下海康摄像头 rtsp相机的rtsp数据是怎么交互的

注册新用户
你好,欢迎使用海康在线服务
-Language-
海康播放器
软件名称海康播放器
&海康威视产品码流的windows播放器,适用于录像文件的播放、鱼眼展开、编辑、串流发布以及RTSP、HLS协议网络流的预览。&版本:V7.4.1操作系统:Windows 32bit/64bit&更新说明:1.支持鹰眼播放功能;2.格式装换工具支持加密文件转码;3.剪切工具支持多路文件同步剪切;4.界面ui交互优化,提升用户体验;5.更新水印协议;6.若出现鱼眼展开和碗型鹰眼展开无法出现画面现象,在以下网址下载并安装DirectX开发工具库即可
软件名称海康播放器Mac32 V1.1.0
海康威视产品码流的Mac播放器,适用于录像文件的播放。 版本:V1.1.0 操作系统:Mac OS 32bit 10.6
软件名称海康播放器 linux32 V1.1.0
海康威视产品码流的linux播放器,适用于录像文件的播放。&版本:V1.1.0&操作系统:ubuntu 32bit 内核版本:2.6.32.35&
软件名称海康YUV播放器win32 V1.0.0.1
&适用于YUV文件的播放和编辑。&操作系统:Windows 32bit版本:V1.0.0.1&
&2017杭州海康威视数字技术股份有限公司
|联系我们||& 相关文章 &
vlc rtsp player
链接地址 这几天学习了下QT,QT核心的东西就是其信号与槽,其他的就是界面的设计,一个程序所有的逻辑部分都是利用信号和槽串起来的。一个widget发送信号,另外一个widget根据这个信号绑定的槽执行相应的函数,这样就实现了界面和程序逻辑的 交互操作。为了练习QT,结合前段时间对VLC播放器的分析,知道VLC播放器的界面也是QT写的,而且Videolan还提供了libvlc核心库给其他程序员做二次开发,再次佩服这样的开源组织,废话少说,下面是我用libvlc和QT写的RTSP播放器的效果,当然
利用QT和libvlc写RTSP播放器
这几天学习了下QT,QT核心的东西就是其信号与槽,其他的就是界面的设计,一个程序所有的逻辑部分都是利用信号和槽串起来的。一个widget发送信号,另外一个widget根据这个信号绑定的槽执行相应的函数,这样就实现了界面和程序逻辑的 交互操作。为了练习QT,结合前段时间对VLC播放器的分析,知道VLC播放器的界面也是QT写的,而且Videolan还提供了libvlc核心库给其他程序员做二次开发,再次佩服这样的开源组织,废话少说,下面是我用libvlc和QT写的RTSP播放器的效果,当然还支持本地
学习rtsp的一些心得
今天仔细的研究了rtsp,大有所获,现在总结下这方面的知识: rtsp初步来说分为两阶段: 第一阶段: 客户端和rtsp服务器端进行交互,也就是术语中所说的会话阶段 第二阶段: 流媒体数据交互阶段,将数据按照rtp+rfc3984拆包由流媒体服务器发送到播放器客户端,然后客户端这边重新组包 上面的理解的比较的肤浅,我本人是用VLC和自己写的程序在自己的电脑上做的测试。 现在要跟大家说的核心,是数据发送的协议问题,这个协议指的是UDP还是TCP的Stream模式。 最初我是这样认为的: RTSP
林老师最后一次大作业的要求翻译:Project 10 – RTSP Windows Client: RFC 2326
test.mp3的文件来满足客户端的请求。你完成的RTSP客户端的基本功能应该能后将传输过来的流,保存在本地。 高级功能:按需从服务端传过来的流中播放音频文件(只是MP3格式)。为了此项功能,你可以好好利用:libvlc库,这是VLC播放器的核心组件。一个例子可供您使用:猛击可得。请您尽可能的参考libvlc的说明,并且请到网站VideoLan下载专门供开发人员使用的zip压缩文件。注意:你只可以使用VLC去播放Mp3文件,但是请写出代码,用于完成RTSP/RTP的传输和下载流保存到本地。 5、必须使用
rtsp流的通信流程
简单的RTSP消息交互过程 本例测试,客户端是使用Vlc播放器,以下信息均为服务器端收到和回应的信息//---------------------------------------------------------------------------------第一步:查询服务器端可用方法1客户端请求(OPTION request):---询问服务器有哪些方法可用"OPTIONS rtsp://192.168.1.122/TestSession RTSP/1.0""CSeq: 2
最近领导要求做一个安卓和pc端实时视频传输的demo。 之前自己写了一个演示demo,比较山寨,基于相机回调函数,一帧帧将图片压缩后传输后台显示。wifi下效果还不错,不过想想就不具备可用性,代码回头有时间发上来吧。 最近研究了一下rtsp协议的视频传输,发现其实还有点小复杂。 目前找到几个有用的东西分享给大家 安卓端一个开源项目spydroid,原理是将手机作为rtsp服务器,将视频压缩后向外发送。支持使用浏览器和vlc这类支持rtsp协议的播放器观看,很不错的东西,值得学习。 地址:链接
牛人对RTSP的android实现
1.学习rtsp的一点心得
rtsp初步来说分为两阶段: 第一阶段: 客户端和rtsp服务器端进行交互,也就是术语中所说的会话阶段 第二阶段: 流媒体数据交互阶段,将数据按照rtp+rfc3984拆包由流媒体服务器发送到播放器客户端,然后客户端这边重新组包 上面的理解的比较的肤浅,我本人是用VLC和自己写的程序在自己的电脑上做的测试。 现在要跟大家说的核心,是数据发送的协议问题,这个协议指的是UDP还是TCP的Stream模式。 最初我是这样认为的: RTSP
海康RTSP客户端连接分析
的RTSP数据是怎么交互的 (1)打开Wireshark,选择"抓包"-&"网络接口"-&选择网卡-&“开始”,在"过滤“栏输入"rtsp",屏蔽不相关信息。 (2)打开VLC播放器,输入海康相机RTSP地址 例如:【rtsp://admin:8.1.145:554/MPEG-4/ch2/main/av_stream】 (3)播放几秒后再点击停止播放,退出VLC播放器。 (4)分析Wireshark数据 三、RTSP协议过程分析 1、RTSP协议梗概 就这几个简单的交互
RTP over RTSP(TCP)(一)
服务器:live555 客户端:VLC 视频格式:H264
(1)OPTIONS
OPTIONS rtsp://222.201.145.236/slamtv60.264 RTSP/1.0 CSeq: 2 User-Agent: LibVLC/1.1.11 (LIVE555 Streaming Media v) 解析:此步骤是客户端向服务器询问有哪些方法可以使用。包里面说明了客户端请求的文件所在的地址和端口,并说明播放器的版本和操作系统平台。 RTSP
日志消息对象或NULL;
链接地址    例程 之前说了,呆龙在做一个简易播放器时需要做日志播放器处理。上面讲了一些,下面给出个简单例子: 背景:对于简易LIBVLC日志处理,我们有三点未知: 1. WHEN:播放器运行时,libvlc何时打出日志; 2. WHERE:我们应该在应用代码的什么地方打日志; 3. HOW:如何利用LIBVLC给出的以上日志API打日志; 基于以上三点,我的想法是单独开一个线程,每隔一秒检查是否有日志,有则打出,没有继续 正文 说明:一些libvlc对象
林老师最后一次大作业:Project 10 – RTSP Windows Client: RFC 2326
:rtsp://127.0.0.1:8554/mp3AudioTest。在Linux上,应该类似于:rtsp://127.0.0.1:554/test.mp3,当然,在服务端肯定存在test.mp3的文件来满足客户端的请求。你完成的RTSP客户端的基本功能应该能后将传输过来的流,保存在本地。 高级功能:按需从服务端传过来的流中播放音频文件(只是MP3格式)。为了此项功能,你可以好好利用:libvlc库,这是VLC播放器的核心组件。一个例子可供您使用:猛击可得。请您尽可能的参考libvlc的说明
Plugin-X Integration Guide for Android 链接地址 Cocos2d-x 屏幕适配新解 链接地址 用Cocos2d-x和libvlc写一个跨平台播放器 链接地址 VLC media player http://www.videolan.org/vlc/ http://www.videolan.org/developers/ http://www.videolan.org/developers/vlc/doc/doxygen/html/group__libvlc.html
和屌丝一起学cocos2dx-CCControlSwitch 链接地址
vlc嵌入QT程序&例&
想在linux用QT做一个实时的播放器,然后想到能不能把vlc嵌入到QT中,然后查资料,找到这个 http://wan-2004.javaeye.com/blog/645761 但是download下来之后,出现各种问题,经过繁琐的找资料和研究,得出肯能是vlc版本问题,原来的一些函数和变量现在不用了。 从上面得到的代码,整理好之后,把里面的关于_vlcexcep的声明和调用都去掉,然后把下面的代码改成我提供代码, 源代码 /* Create a new LibVLC media
也依赖了大量的外部开源库,如知名的ffmpeg、qt、live555等。 外部库列表 VLC main:player的main。初始化libVLC 并加载用户界面,注意vlc的用户界面也是已module的形式存在。 基于libvlc 我们就能自己开发自己的播放器了。 modules 按照功能大致分类 vlc 也提供了一个模块列表 点击打开链接
live555与vlc的rtsp组播交互信息
OPTIONS rtsp://192.168.1.154: RTSP/1.0 CSeq: 2 User-Agent: LibVLC/1.1.4 (LIVE555 Streaming Media v)
RTSP/1.0 200 OK CSeq: 2 Date: Sat, Jan 01 :56 GMT Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE
qt creator系列教程--目录
Qt Creator系列教程 为了使更多的Qt初学者能尽快入门Qt,也为了Qt及Qt Creator的快速普及,我们花费大量精力写出了这一系列教程。虽然教程的知识可能很浅显,虽然教程的语言可能不规范,但是它却被数十万网友所认可。我们会将这一系列教程一直写下去,它将涉及Qt的方方面面。 本系列教程一直在更新… … 版权声明:该系列教程全部原创,版权归www.yafeilinux.com所有,您可以自由转载,但必须保留该声明,且不能用于商业用途。 专题类: 方块游戏系列
Qt串口通信
(socket管理,网络错误等) # osd/: 显示屏幕上的操作 # test/: libvlc测试模块 # text/: 字符集 # interface/ : 提供代码中可以调用的接口中,如按键后硬件作出反应。 # playlist/: 管理播放功能,如停止,播放,下一首,随机播放等 # input/: 建立并读取一个输入流,并且分离其中的音频和视频,然后把分离好的音频流和视频流发送给解码器. # video_output/ : 初始化视频播放器,把从解码器得到的视频画面转化格式(从YUV
RTSP 流媒体播放地址
在线流媒体播放地址,在windows上可以用VLC播放器直接打开地址播放 浙江普通rtsp://58.248.254.8/rtpencoder/26-2-2.sdp高清rtsp://58.248.254.8/rtpencoder/26-2-1.sdp 四川卫视: rtsp://58.248.254.8/rtpencoder/26-6-3. rtsp://58.248.254.8/rtpencoder/26-6-3.sdp 山东卫视: rtsp://58.248.254.8
公开的几个 rtsp流媒体测试地址
(清晰) rtsp://218.204.223.237:554/live/1/6D1EBDA/oby9efo80duh9bjf.sdp ==================================================================================================== 链接地址 链接地址使用Vitamio打造自己的Android万能播放器(5)——在线播放(播放优酷视频) 发布于:
LIVE555研究之二: RTSP、RTP/RTCP协议介绍
后收到消息,那么播放立即开始。 不含Range头的PLAY请求也是合法的,此时将从媒体流开始位置播放,直到媒体流被暂停。如果媒体流通过PAUSE暂停,媒体流传输将在暂停点继续传输。如果媒体流正在播放,那么该PLAY请求将不起作用。客户端可以利用此来测试服务器是否存活。 PLAY rtsp://10.34.3.80/D:/a.264/ RTSP/1.0
User-Agent: LibVLC/2.0.7 (LIVE555 Streaming Media v
& 2012 - 2016 & aiuxian.com &All Rights Reserved. &
/*爱悠闲图+*/
var cpro_id = "u1888441";博客分类:
- 初步了解rtsp, 理论基础还不足
为什么要用流媒体
- 低带宽下, 流媒体的延迟, 流畅, 呈现效果比lighttpd等的http流式下载要好不少, 例如手机看视频
- 所以, 能一定程度上节省带宽
- 天生支持拖放, 如果是rtmp, 还能在同一条tcp链接里放多个流, 可以实现码率动态调整
- 如果流媒体服务器是自制的, 能实时/准确得知用户的观看行为, 例如时长, 拖放情况
为什么用rtsp
- 据说是工业级开放标准, 例如rtmp也不错(能与client交互), 但确实adobe家的
- 所以, 服务器, 客户端, 类库丰富, 开源的质量也不错
- 相对成熟些, 标准都出来N久了
架设vod服务器, 有什么选择
- 自己写个, 可以用ffmpeg来解码, live555.com来处理rtsp协议, 缺点是耗时较久
- live555也有个streaming server, 但太初级了
- 用vlc, 支持从设备(摄像头或采集卡), 节目单(轮播), vod进行streaming服务, 有gui向导, 又有命令行和配置文件, 缺点是vlc质量有问题, 一个client揉了太多功能进去了
- 用Darwin streaming server, 历史悠久软件成熟, 有web管理界面, 是个地道的server, 缺点是版本老, 源码文档少, 支持类型少, 而且还有个莫名其妙的版权管理功能
- red5, 0.9的代码里已经有了net.rtsp包了, 这个是最容易定制的, java么, 简单些, 缺点是0.9还没出来呢, red5也一向不太稳定(社区/代码质量/法律风险)
浏览: 17149 次
来自: 上海
架构师就是切大饼的。。。切的不合理就自己在中间咬一口
呵呵,我觉得大家说的都有点偏!
拿个比喻吧:一所房子,需要开窗 ...
写的是什么呀?散文?
另外,项目经理可以不懂技术细节,但是不能不懂技术。当然如果有个 ...
文和乱舞 写道logicgate 写道codeall 写道ra ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'?您当前的位置: >
[rtsp]RTSP协议海康客户端连接分析
时间: 14:29IT瘾
[rtsp]RTSP协议海康客户端连接分析,最近在做海康相机rtsp连接获取音视频的工作,现在介绍一下分析过程和源码。
最近在做海康相机rtsp连接获取音视频的工作,现在介绍一下分析过程和源码。
【源码在我上传的共享资料中:
& &一、基本原理
&RTSP客户端去连接服务器的最基本步骤如下: &&
(1)分析url中的端口号,创建一个与服务器[S-PORT]端口号的TCP连接用于RTSP命令交互
(2)执行RTSP命令请求,告诉服务器可以连接到本地的端口[C-PORT]进行数据发送
(3)客户端从本地[C-PORT]读取数据
& &二、研究步骤
&来研究一下海康相机的RTSP数据是怎么交互的
(1)打开Wireshark,选择&抓包&-&&网络接口&-&选择网卡-&&开始&,在&过滤&栏输入&rtsp&,屏蔽不相关信息。
(2)打开VLC播放器,输入海康相机RTSP地址
例如:【rtsp://admin:8.1.145:554/MPEG-4/ch2/main/av_stream】
(3)播放几秒后再点击停止播放,退出VLC播放器。
(4)分析Wireshark数据
热门文章推荐
酷播交流2群:(新群)
酷播交流1群:(已满)1373人阅读
VS开发(271)
视频开发(156)
海康相机RTSP连接代码分析
最近在做海康相机rtsp连接获取音视频的工作,现在介绍一下分析过程和源码。
【源码在我上传的共享资料中: 】
一、基本原理
RTSP客户端去连接服务器的最基本步骤如下:
(1)分析url中的端口号,创建一个与服务器[S-PORT]端口号的TCP连接用于RTSP命令交互 (2)执行RTSP命令请求,告诉服务器可以连接到本地的端口[C-PORT]进行数据发送 (3)客户端从本地[C-PORT]读取数据
二、研究步骤
来研究一下海康相机的RTSP数据是怎么交互的
(1)打开Wireshark,选择"抓包"-&"网络接口"-&选择网卡-&“开始”,在"过滤“栏输入"rtsp",屏蔽不相关信息。
(2)打开VLC播放器,输入海康相机RTSP地址
例如:【rtsp://admin:8.1.145:554/MPEG-4/ch2/main/av_stream】
(3)播放几秒后再点击停止播放,退出VLC播放器。 (4)分析Wireshark数据
三、RTSP协议过程分析
1、RTSP协议梗概
就这几个简单的交互命令就能实现RTSP对接,C代表Client S代表Server
例如:C1-客户端发的第一个命令 S1-服务器响应的第一个回复
【C1】OPTIONS rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream RTSP/1.0RTSP
【S1】Reply: RTSP/1.0 200 OK RTSP 【C2】DESCRIBE rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream RTSP/1.0RTSP【S2】Reply: RTSP/1.0 401 Unauthorized RTSP 【C3】DESCRIBE rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream RTSP/1.0RTSP【S3】Reply: RTSP/1.0 200 OK, with session descriptionRTSP/SDP 【C4】SETUP rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream/trackID=1 RTSP/1.0RTSP 【S4】Reply: RTSP/1.0 200 OK RTSP 【C5】SETUP rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream/trackID=2 RTSP/1.0RTSP 【S5】Reply: RTSP/1.0 200 OK RTSP 【C6】PLAY rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream/ RTSP/1.0RTSP 【S6】Reply: RTSP/1.0 200 OK RTSP 【C7】GET_PARAMETER rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream/ RTSP/1.0RTSP 【S7】Reply: RTSP/1.0 200 OK RTSP 【C8】TEARDOWN rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream/ RTSP/1.0RTSP 【S8】Reply: RTSP/1.0 200 OK RTSP
2、请求OPTION
【C1-OPTION】
Request: OPTIONS rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream RTSP/1.0\r\n
CSeq: 2\r\n
User-Agent: LibVLC/2.1.3 (LIVE555 Streaming Media v)\r\n
询问RTSP服务器有哪些命令可以使用
【S1-REPLY】
Response: RTSP/1.0 200 OK\r\n
CSeq: 2\r\n
Public: OPTIONS, DESCRIBE, PLAY, PAUSE, SETUP, TEARDOWN, SET_PARAMETER, GET_PARAMETER\r\n
Thu, Nov 27 :41 GMT\r\n
服务器回应客户端的请求。这个回应第一行为OK,则表明服务器接受查询命令,并且反馈给客户端信息,可以使用的命令有:OPTIONS, DESCRIBE, PLAY, PAUSE, SETUP, TEARDOWN, SET_PARAMETER, GET_PARAMETER,则下一步就可以向服务器发送这些命令,如果没有,则服务器不接收这些命令。
3、无验证请求资源描述DESCRIBE
【C2-DESCRIBE】
Request: DESCRIBE rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream RTSP/1.0\r\n
CSeq: 3\r\n
User-Agent: LibVLC/2.1.3 (LIVE555 Streaming Media v)\r\n
Accept: application/sdp\r\n
请求RTSP服务器描述自身有哪些音视频资源
【S2-REPLY】
Response: RTSP/1.0 401 Unauthorized\r\n
CSeq: 3\r\n
WWW-Authenticate: Digest realm="", nonce="66bb9f0bf5ac93a909ac8e8", stale="FALSE"\r\n
WWW-Authenticate: Basic realm=""\r\n
Thu, Nov 27 :41 GMT\r\n
服务器回应客户端的请求。第一行为Unauthorized,表明认证不成功服务器拒绝给出拥有的资源,因此我们需要再次发送认证的请求到服务器,则服务器才能给出拥有的资源
4、认证请求资源描述DESCRIBE
【C3-DESCRIBE】
Request: DESCRIBE rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream RTSP/1.0\r\n
CSeq: 4\r\n
Authorization: Digest username="admin", realm="", nonce="66bb9f0bf5ac93a909ac8e8", uri="rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream", response="d21aa6fc"\r\n
User-Agent: LibVLC/2.1.3 (LIVE555 Streaming Media v)\r\n
Accept: application/sdp\r\n
发送具有认证标识的信息到服务器,去获取服务器的资源列表。怎样的格式算正确认证的信息?这个关键在于response字段。[S2-REPLY]中反馈了两个信息realm="", nonce="66bb9f0bf5ac93a909ac8e8",
**************************************response区域的计算规则如下***********************************
(1)当password为MD5编码,则
response = md5(&password&:&nonce&:md5(&cmd&:&url&));
(2)当password为ANSI字符串,则
response = md5(md5(&username&:&realm&:&password&):&nonce&:md5(&cmd&:&uri&));
***********************************************************************************************************
其中 password=密码,nonce=服务器返回的nonce,cmd=当前命令(DESCRIBE、SETUP等),realm=服务器返回的reaml,uri=请求的uri地址.当服务器接收到response为d21aa6fc的时候,服务器也会用这一套公式去计算,当发现计算出的值与客户端提供的值吻合的时候,则表明用户名和密码校验成功!
/*MD5加密函数*/
int md5_hash(const void *buff, size_t len, char *hexsum);
&span style="white-space:pre"& &/span&/*发送具有response认证的describe命令函数*/
void RtspRequest::SendRegisterRequest(string requestType)
string requestC
char cseq[256];
char session[256];
char author[500] = { 0 };
char acc[200] = { 0 };
char szInput[200] = { "" };
char szOutput[200] = { 0 };
char szMd5Pwd[200] = { 0 };
char szmd5methorduri[200] = { 0 };
if (m_SetupName.length())
requestCmd = requestT
requestCmd += " ";
requestCmd += m_RequestsM
requestCmd += "/";
requestCmd += m_SetupN
requestCmd += " RTSP/1.0";
m_SetupName = "";
requestCmd = requestT
requestCmd += " ";
requestCmd += m_RequestsM
requestCmd += " RTSP/1.0";
//当password为ANSI字符串 response = md5(md5(&username&:&realm&:&password&):&nonce&:md5(&cmd&:&uri&));
//md5(&username&:&realm&:&password&)=md5(admin::12345)=fa47d934c754db5ebebd9b42a4412073
sprintf_s(szInput, 200, "%s:%s:%s", m_uername.c_str(), m_realm.c_str(), m_password.c_str());
md5_hash(szInput, strlen(szInput), szMd5Pwd);
//md5(&cmd&:&uri&)=md5(DESCRIBE:rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream) =0b0a4e77e852876bdfdf6ecb72ba3900
sprintf_s(szInput, 200, "DESCRIBE:%s", m_RequestsMrl.c_str());
md5_hash(szInput, strlen(szInput), szmd5methorduri);
//md5(md5(&username&:&realm&:&password&):&nonce&:md5(&cmd&:&uri&));
//=md5(fa47d934c754db5ebebd9b42abb9f0bf5ac93a909ac8e8b0a4e77e852876bdfdf6ecb72ba3900)
&span style="white-space:pre"&
&/span&//=d21aa6fc
//关于这一条,http://www.3464.com/Tools/MD5/index.asp 网站给出的结论则不一致:98f90a583e5c436f83da956c9b00767b
&span style="white-space:pre"&
&/span&//我的代码给出的值与VLC和其它工具给出的值完全匹配
sprintf_s(szInput, 200, "%s:%s:%s", szMd5Pwd, m_nonce.c_str(), szmd5methorduri);
md5_hash(szInput, strlen(szInput), szOutput);
m_response = szO
_snprintf(cseq, 256, "CSeq: %u", m_CSeq);
_snprintf(author, 500, "Authorization: Digest username=\"%s\", realm=\"%s\", nonce=\"%s\", uri=\"%s\", response=\"%s\"",
m_uername.c_str(), m_realm.c_str(), m_nonce.c_str(), m_RequestsMrl.c_str(), m_response.c_str());
_snprintf(acc, 500, "Accept: application/sdp");
if (requestType.compare("TEARDOWN") == 0)
m_Session = 0;
_snprintf(session, 256, "Session: %I64u", m_Session);
Write(requestCmd.c_str());
Write(cseq);
Write(author);
Write("User-Agent: LibVLC/2.1.3 (LIVE555 Streaming Media v)");
Write(acc);
if (m_Session & 0)
Write(session);
WriteFields();
Write("");
【S3-REPLY】
Response: RTSP/1.0 200 OK\r\n
CSeq: 4\r\n
Content-type: application/sdp
Content-Base: rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream/\r\n
Content-length: 672
Session Description Protocol
Session Description Protocol Version (v): 0
Owner/Creator, Session Id (o): -
IN IP4 192.168.1.145
Session Name (s): Media Presentation
E-mail Address (e): NONE
Bandwidth Information (b): AS:5100
Time Description, active time (t): 0 0
Session Attribute (a): control:rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream/
Media Description, name and address (m): video 0 RTP/AVP 96
Bandwidth Information (b): AS:5000
Media Attribute (a): control:rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream/trackID=1
Media Attribute (a): rtpmap:96 H264/90000
Media Attribute (a): fmtp:96 profile-level-id=420029; packetization-mode=1; sprop-parameter-sets=Z0KAH4iLUCgC3QgAADhAAAr8gCA=,aM44gA==
Media Description, name and address (m): audio 0 RTP/AVP 0
Bandwidth Information (b): AS:50
Media Attribute (a): control:rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream/trackID=2
Media Attribute (a): rtpmap:0 PCMU/8000
Media Attribute (a): Media_header:MEDIAINFO=494D4BFA;
Media Attribute (a): appversion:1.0
首先第一行给了OK,表明上一个命令成功--DESCRIBE成功得到服务器认证
其次,给出了服务器的媒体信息-具有两路码流--音频(audio)和视频(video) 并给出了请求两路数据的地址
5、请求视频资源
【C4-SETUP】
Request: SETUP rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream/trackID=1 RTSP/1.0\r\n
CSeq: 5\r\n
Authorization: Digest username="admin", realm="", nonce="66bb9f0bf5ac93a909ac8e8", uri="rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream/", response="dfd7cfced"\r\n
User-Agent: LibVLC/2.1.3 (LIVE555 Streaming Media v)\r\n
Transport: RTP/AVP;client_port=
请求获取流媒体服务器上的视频资源 并告知服务器可以往客户端56732端口发送视频数据,56733为RTCP接收端口,发送方式为单播。传输方式为UDP
**********************传输方式与Transport string的对应关系**********************
UDP传输:Transport:RTP/AVP
TCP传输:Transport:RTP/AVP/TCP
RAW UDP传输:Transport:RAW/RAW/UDP
****************************************************************************************
【S4-REPLY】
Response: RTSP/1.0 200 OK\r\n
CSeq: 5\r\n
Session: ;timeout=60
Transport: RTP/AVP;client_port=;server_port=;ssrc=4a3a67d5;mode="play"
Thu, Nov 27 :41 GMT\r\n
服务器同意发送视频数据给客户端 56732为视频接收端,56733为RTCP接收端口,发送方式为单播。传输方式为UDP
6、请求音频资源
【C5-SETUP】
Request: SETUP rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream/trackID=2 RTSP/1.0\r\n
CSeq: 6\r\n
Authorization: Digest username="admin", realm="", nonce="66bb9f0bf5ac93a909ac8e8", uri="rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream/", response="dfd7cfced"\r\n
User-Agent: LibVLC/2.1.3 (LIVE555 Streaming Media v)\r\n
Transport: RTP/AVP;client_port=
请求获取服务器上的音频资源 并告知服务器可以往客户端56734端口发送视频数据,56735为RTCP接收端口,发送方式为单播。传输方式为UDP
【S5-REPLY】
Response: RTSP/1.0 200 OK\r\n
CSeq: 6\r\n
Session: ;timeout=60
Transport: RTP/AVP;client_port=;server_port=;ssrc=;mode="play"
Thu, Nov 27 :41 GMT\r\n
服务器同意发送音频数据给客户端 56734为视频接收端,56735为RTCP接收端口,发送方式为单播。传输方式为UDP
7、开始数据接收
【C6-PLAY】
Request: PLAY rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream/ RTSP/1.0\r\n
CSeq: 7\r\n
Authorization: Digest username="admin", realm="", nonce="66bb9f0bf5ac93a909ac8e8", uri="rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream/", response="4c4e89a489fde1aeaf9e44"\r\n
User-Agent: LibVLC/2.1.3 (LIVE555 Streaming Media v)\r\n
Range: npt=0.000-\r\n
告知服务器一切准备就绪,数据可以发过来了!come on baby!
【S6-REPLY】
Response: RTSP/1.0 200 OK\r\n
CSeq: 7\r\n
RTP-Info: url=rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream/trackID=1;seq=31283;rtptime=,url=rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream/trackID=2;seq=3370;rtptime=\r\n
Thu, Nov 27 :41 GMT\r\n
服务器告知客户端,朋友我已经送数据过来了,你可以接收了!
这个时候我们打开Wireshark,在过滤栏输入rtp,可以看到如下数据,表明服务器已经向客户端的5端口发送数据
RTP拆包到图像显示和音频播放,会在我的下一篇博客中详细解释
8、关闭播放
【C7-TEARDOWN】
Request: TEARDOWN rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream/ RTSP/1.0\r\n
Method: TEARDOWN
URL: rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream/
CSeq: 9\r\n
Authorization: Digest username="admin", realm="", nonce="66bb9f0bf5ac93a909ac8e8", uri="rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream/", response="afa51f8d5"\r\n
User-Agent: LibVLC/2.1.3 (LIVE555 Streaming Media v)\r\n
关闭数据传输 释放服务器资源 如果需要重新获取码流 则需要从1~6再来一次
【S7-REPLY】
Response: RTSP/1.0 200 OK\r\n
Status: 200
CSeq: 9\r\n
Thu, Nov 27 :42 GMT\r\n
服务器已经成功关闭当前链接
本文引用:http://blog.163.com/seek_for/blog/static//
文章:47篇
阅读:131303
文章:24篇
阅读:124081
文章:50篇
阅读:198336
文章:18篇
阅读:41618

我要回帖

更多关于 海康摄像头 rtsp 的文章

 

随机推荐