实时点播
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