【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="4419b727ab09", nonce="66bb9f0bf5ac93a909ac8e88877ae727", uri="rtsp://192.168.1.145:554/MPEG-4/ch2/main/av_stream", response="108084646408d21aa255664781c886fc"\r\n

User-Agent: LibVLC/2.1.3 (LIVE555 Streaming Media v2014.01.21)\r\n

Accept: application/sdp\r\n

\r\n

发送具有认证标识的信息到服务器,去获取服务器的资源列表。怎样的格式算正确认证的信息?这个关键在于response字段。[S2-REPLY]中反馈了两个信息realm="4419b727ab09", nonce="66bb9f0bf5ac93a909ac8e88877ae727",

**************************************response区域的计算规则如下***********************************

(1)当password为MD5编码,则

response = md5(::md5(:));

(2)当password为ANSI字符串,则

response = md5(md5(::)::md5(:));

***********************************************************************************************************

其中 password=密码,nonce=服务器返回的nonce,cmd=当前命令(DESCRIBE、SETUP等),realm=服务器返回的reaml,uri=请求的uri地址.当服务器接收到response为108084646408d21aa255664781c886fc的时候,服务器也会用这一套公式去计算,当发现计算出的值与客户端提供的值吻合的时候,则表明用户名和密码校验成功!

/*MD5加密函数*/ int md5_hash(const void *buff, size_t len, char *hexsum);

/*发送具有response认证的describe命令函数*/ void RtspRequest::SendRegisterRequest(string requestType) { string requestCmd; 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 }; m_CSeq++; if (m_SetupName.length()) { requestCmd = requestType; requestCmd += " "; requestCmd += m_RequestsMrl; requestCmd += "/"; requestCmd += m_SetupName; requestCmd += " RTSP/1.0"; m_SetupName = ""; } else { requestCmd = requestType; requestCmd += " "; requestCmd += m_RequestsMrl; requestCmd += " RTSP/1.0"; } //当password为ANSI字符串 response = md5(md5(::)::md5(:)); //md5(::)=md5(admin:4419b727ab09: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(:)=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(::)::md5(:)); //=md5(fa47d934c754db5ebebd9b42a4412073:66bb9f0bf5ac93a909ac8e88877ae727:0b0a4e77e852876bdfdf6ecb72ba3900) //=108084646408d21aa255664781c886fc //关于这一条,http://www.3464.com/Tools/MD5/index.asp 网站给出的结论则不一致:98f90a583e5c436f83da956c9b00767b //我的代码给出的值与VLC和其它工具给出的值完全匹配 sprintf_s(szInput, 200, "%s:%s:%s", szMd5Pwd, m_nonce.c_str(), szmd5methorduri); md5_hash(szInput, strlen(szInput), szOutput); m_response = szOutput; _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 v2014.01.21)"); 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

\r\n

Session Description Protocol

Session Description Protocol Version (v): 0

Owner/Creator, Session Id (o): - 1417089581269778 1417089581269778 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=494D4B48010100000400010010710110401F000000FA000000000000000000000000000000000000;

Media Attribute (a): appversion:1.0

首先第一行给了OK,表明上一个命令成功--DESCRIBE成功得到服务器认证

其次,给出了服务器的媒体信息-具有两路码流--音频(audio)和视频(video) 并给出了请求两路数据的地址

rtsp连接断开_海康RTSP客户端连接分析相关推荐

  1. rtsp连接断开_live555学习之RTSP连接建立以及请求消息处理过程

    live555 学习之 RTSP 连接建立以及请求消息处理过程 1 , RTSP 连接的建立过程 RTSPServer 类用于构建一个 RTSP 服务器,该类同时在 其内部定义了一个 RTSPClie ...

  2. 使用JavaCV实现海康rtsp转rtmp实现无插件web端直播(无需转码,低资源消耗)

    使用JavaCV实现海康rtsp转rtmp实现无插件web端直播(无需转码,低资源消耗) 目录结构 添加依赖,编写配置文件 创建Bean 创建缓存Cache 修改启动类 拉流.推流.转封装 定时任务T ...

  3. RTSP/RTMP/GB28181协议/海康SDK/Ehome协议接入TSINGSEE青犀视频平台磁盘空间计算介绍

    通常情况下,RTSP/RTMP/GB28181协议/海康SDK/Ehome协议接入TSINGSEE青犀视频平台录制的视频流都是存储在磁盘当中,我们之前讲过磁盘空间是否满足剩余的要求的方法,具体实现方式 ...

  4. 两个rtsp同时抓流_海康摄像头同时添加到两台海康硬盘录像机上

    相信大家都有这种经历,我我为啥要多买两个摄像头呀,我直接一个摄像头添加到两台硬盘录像机上不香吗? 海康摄像头一般不建议同时添加到超过三台录像机,由于取流限制~ 那么如何同时添加到两台海康录像机上呢? ...

  5. rtsp连接断开_live555_RTSP连接建立以及请求消息处理过程

    1,RTSP连接的建立过程RTSPServer类用于构建一个RTSP服务器,该类同时在其内部定义了一个RTSPClientSession类,用于处理单独的客户会话.首先创建RTSP服务器(具体实现类是 ...

  6. 海康RTSP流转RTMP并推送至Web端展示

    最近帮着老师做项目的时候碰到一个难题,将海康摄像头的影像实时传输到前端页面进行展示.Google查了两天,终于有些眉目,记录一下经验. 大致需要经过以下几个步骤: 获取海康摄像头的视频流(基于RTSP ...

  7. 大华、海康rtsp视频流格式

    一.海康威视热眼警戒摄像机DS-2TD1217-3/PA 型号 1号与2号摄像头(Camera 01.Camera 02) 方法一.只能读取1号摄像头 rtsp://admin:密码@192.168. ...

  8. rtsp连接断开_RTSP详解

    关于 RTSP. RTSP协议是一个非常类似HTTP协议的流控制协议.它们都使用纯文本来发送信息,而且rtsp协议的语法也和HTTP类似.Rtsp一开始这样设计,也是为了能够兼容使用以前写的HTTP协 ...

  9. 用vlc插件在页面上播放海康rtsp推流监控

    原文链接:https://blog.csdn.net/weixin_43948724/article/details/104422825 vlc插件目前只能在360.搜狗等可以开启兼容模式下的浏览器使 ...

  10. 道路交通安全违法行为图像取证技术规范_海康移动取证方案中的设备介绍

    上节介绍了一下海康移动取证方案的大概组成,这节介绍一下方案中,数据采集所需的硬件设备. 移动取证系统方案拓扑 车载前端设备 车载智慧云台采集设备(两选一) 海康车载智慧云台采用1080P.30倍变倍的 ...

最新文章

  1. oracle的一知半解
  2. centos 7 网络配置( 网关、dns、ip地址配置)
  3. 【Linux】一步一步学Linux——dnsdomainname命令(174)
  4. php 机数,PHP实现自动刷数和“灌水”机
  5. Angularjs基础(三)
  6. Linux内核相关书籍
  7. Zigbee 学习计划——第1天——第一个程序
  8. Android音频框架笔记 - 上篇
  9. 20190914每日一句
  10. 解决Win11快捷键反应慢有延迟
  11. 浪潮nf5280m5默认ipmi_NF5180M5- IPMI设置
  12. 中高级iOS大厂面试宝典,拿到offer率80%,金三银四将是你的新起点
  13. codevs 1296
  14. 笔记本合上后再打开电源键常亮,无法唤醒,只能强制开机
  15. 软件测试:什么样的公司需要专职测试?
  16. HTML设置页面动画效果有几种,前端制作动画的几种方式(css3,js)
  17. 何华达回忆录:何华达经历的辛酸过去!
  18. 5java讲解(xy)
  19. oracle--游标
  20. iOS 指纹支付和面容支付

热门文章

  1. 斯坦福NLP名课带学详解 | CS224n 第7讲 - 梯度消失问题与RNN变种(NLP通关指南·完结)
  2. 创建线程的三种方法c语言,创建线程 - Python教程 - C语言网
  3. 学校计算机联想硬盘保护系统管理员密码,联想硬盘保护系统管理员密码是多少...
  4. 高拍仪Linux系统(银河麒麟/统信uos系统)二次开发
  5. SAP财务主要模块介绍
  6. FFmpeg mxf扩展hdr、bt2020
  7. Linux 2.6内核配置说明
  8. STM32F1开发指南笔记20----数码管驱动芯片TM1640解析
  9. STM8L152的LCD模块原理及驱动
  10. win10计算机删除用户密码,怎么删除win10电脑上的账户密码