实时点播
- 1.信令
- 开始点播
- Platfrom=>>Device:
- Device=>>Platform:
- 停止点播
- Platfrom=>>Device:
- Device=>>Platfrom:
- 开始点播
- 2.视频流
- 技术交流
1.信令
开始点播
Platfrom=>>Device:
代码语言:javascript复制<?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:
代码语言:javascript复制<?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>679647373</Session>
</Params>
</PPVSPMessage>
停止点播
Platfrom=>>Device:
代码语言:javascript复制<?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>679647373</Session>
</Params>
Device=>>Platfrom:
代码语言:javascript复制<?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>679647373</Session>
</Params>
</PPVSPMessage>
2.视频流
通过海康ehome协议通过TCP点播海康的摄像头,摄像头推送的流并非标准的PS流。 格式如下: 2400013980600000000000000a689ebc0d000001ba5e269c2ee401028f63feffff007d4909000001e000128c80092789a70bb9fffffffc000000010930000001e0001a8c0005fffffffffc00000001060109004e082468000003000180000001e000da8c0004fffffff80000000161e2727088000411c4469504636f3802c8118505f81b0b3171564e0668c371e18a3614cf05a24bcf006d9a6ad1ffc3efc7917c8cce99343b4e839750fefd8f32361ab3270444fbc90eb51586ad45d445f11ec996ea36aeab6446958282a9f687350a42463ed140d4465783237338b91d4c0dbebb8d3cc61e8092cd7124f6dd41c30f87771e399896cd633c0dfb6fcab16d472c25788870ee859f7eabce0c982024ca0eabdaaec2422ac14929c0002792538f0c0b7ed51d0ef09988ca548018530494fcdfd400000300b929180062c0
可以看到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包的分隔符。
技术交流
后续将在非SDK对接的基础上深度剖析ehome协议,使大家监控上云更方便。 基友之家:ehome开源服务