海康ehome协议分析(2):预览请求

海康ehome协议分析(2):预览请求实时点播 1 信令开始点播 Platfrom gt gt Device Device gt gt Platform 停止点播 Platfrom gt gt Device Device gt gt Platfrom 2 视频流技术交流 1 信令开始点播 Platfrom gt gt Device xmlversion 1 0 encoding GB2312 PPVSPMessage Version 2 5 Version PPVSPMessage

1.信令

开始点播

Platfrom=>>Device:

<?xml version="1.0" encoding="GB2312" ?> <PPVSPMessage> <Version>2.5</Version> <Sequence>3566</Sequence> <CommandType>REQUEST</CommandType> <Method>MEDIA</Method> <Command>INVITESTREAM</Command> <Params> <!-- 请求设备通道号--> <Channel>1</Channel> <!-- 请求设备码流类型:MAIN:主码流,SUB:子码流,THIRD:三码流--> <ChannelType>MAIN</ChannelType> <SinkIP>192.168.1.133</SinkIP> <SinkPort>8000</SinkPort> </Params> </PPVSPMessage> 

Device=>>Platform:

<?xml version="1.0" encoding="GB2312"?> <PPVSPMessage> <Version>2.0</Version> <Sequence>3566</Sequence> <CommandType>RESPONSE</CommandType> <WhichCommand>INVITESTREAM</WhichCommand> <!-- 当前请求流后状态码,200标示成功,其他见错误码--> <Status>200</Status> <Description>OK</Description> <Params> <!-- 当前请求流位置标示,类似ssrc--> <Session></Session> </Params> </PPVSPMessage> 

停止点播

Platfrom=>>Device:

<?xml version="1.0" encoding="GB2312" ?> <PPVSPMessage> <Version>2.5</Version> <Sequence>8068</Sequence> <CommandType>REQUEST</CommandType> <Method>MEDIA</Method> <Command>BYESTREAM</Command> <Params> <!--与开始点播的Session一致 --> <Session></Session> </Params> 

Device=>>Platfrom:

<?xml version="1.0" encoding="GB2312"?> <PPVSPMessage> <Version>2.0</Version> <Sequence>8068</Sequence> <CommandType>RESPONSE</CommandType> <WhichCommand>BYESTREAM</WhichCommand> <Status>200</Status> <Description>OK</Description> <Params> <!--与开始点播的Session一致 --> <Session></Session> </Params> </PPVSPMessage> 

2.视频流

通过海康ehome协议通过TCP点播海康的摄像头,摄像头推送的流并非标准的PS流。
格式如下:
00000000000000a689ebc0d000001ba5e269c2eef63feffff007de000128ca70bb9fffffffc0000000e0001a8c0005fffffffffc0000000e0000e000da8c0004fffffffe11cf3802cf81b0be0668c371e18a3614cf05a24bcf006d9a6ad1ffc3efc7917c8cce99343b4efefd8f32361abfbc90eb51586ad45d445f11ec996ea36aeaba9fa42463ed140d38b91d4c0dbebb8d3cc61e8092cd7124f6dd41c30f87771ecd633c0dfb6fcab16d472cee859f7eabce0cca0eabdaaec2422ac14929c000f0c0b7ed51d0ef09988ca4fcdfdbc0

可以看到000001ba是PS流的头,而PS是荷载在RTP包中,那么我们来分析下PS头前面的字节:

24 00 01 39 80 60 00 00 00 00 00 00 0a 68 9e bc 0d

  • 24 00 前两个字节是‘$’,有点像tcp传输的rtsp协议;
  • 01 39 为RTP包的长度,这里为313;
  • 80 60 00 00 00 00 00 00 0a 68 9e bc为标准12位的RTP头,其中第3,4个字节是sequence号,这里是00 00 ,0a 68 9e bc为ssrc;
  • 0d,这里认为是RTP头与PS包的分隔符。

技术交流


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233445.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 小米6X 解BL锁教程 申请BootLoader解锁教程[通俗易懂]

    小米6X 解BL锁教程 申请BootLoader解锁教程[通俗易懂]小米6X线刷兼救砖_解账户锁_纯净刷机包_教程一、准备工作1、注册小米账号:点击注册(已有小米账号请忽视)2、在手机中登陆【小米账号】3、下载并解压【小米解锁工具】或点击这里下载安装二、开始解锁1打开【小米解锁官网】:http://www.miui.com/unlock/,点击【立即解锁】,输入【小米账号】,点击【立即登录】,填写好上诉信息后,点击【立即申请】,输入【短…

    2022年5月18日
    59
  • nexus 3.x搭建私库引用私库

    nexus 3.x搭建私库引用私库1.官网下载地址:https://www.sonatype.com/download-oss-sonatype下载后:2.解zip文件进入bin文件:在cmd窗口输入指令nexus.exe/run启动:出现如下界面则启动成功:3.浏览器输入http://localhost:8081/点击Signin,账户:admin,密码:admin12…

    2022年7月18日
    8
  • Java设计模式菜鸟系列(两)建模与观察者模式的实现

    Java设计模式菜鸟系列(两)建模与观察者模式的实现

    2022年1月12日
    51
  • idea2021.3.15激活 3月最新注册码

    idea2021.3.15激活 3月最新注册码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    49
  • Visual Studio——使用多字节字符集与使用Unicode字符集

    Visual Studio——使用多字节字符集与使用Unicode字符集vs配置选项“使用多字节字符集”和“使用Unicode字符集”的区别VS集成开发环境,字符集选择“使用多字节字符集”和“使用Unicode字符集”的直接区别就是:编译器是否增加了宏定义——UNICODE。当选择“使用Unicode字符集”时,编译器会增加宏定义——UNICODE;而选择“使用多字节字符集”时,编译器则不会增加宏定义——UNICODE。而是否增加了宏定义UNICODE,则…

    2025年8月15日
    3
  • mybatis rowbound_mybatis基本步骤

    mybatis rowbound_mybatis基本步骤其实说白了就是一个用java代替了sql查询的一个方法在java里面写入方法getUserByRowBounds:List<User>getUserByRowBounds();配置文件里写入:<selectid=”getUserByRowBounds”resultMap=”userMap”>select*frommybaties.user;</select>测试类里编写rowBounds进行分页:

    2022年9月15日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号