海康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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

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

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