网络摄像机(IPC)开发(5):ONVIF获取rtsp流url

698 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

 一、获取URL

通过GetStreamUri获取IPC的rtsp流url,这个url地址就是后面RTSP交互时,获取视频流的地址,同时,通过VLC等软件加载网络URL,也是可以播放视频流的。

二、获取编码参数实现

1、创建tcp socket,IP为192.168.100.123,端口:8099;

2、填写ProfileToken值为上篇博客获取编码参数的值token="000",这里直接填写000就行;

3、通过ONVIF Device Test Tool工具获取GetStreamUri数据如下:

4、发送(send)数据:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:trt="http://www.onvif.org/ver10/media/wsdl" 
xmlns:tt="http://www.onvif.org/ver10/schema">
<soap:Body>
<GetStreamUri xmlns="http://www.onvif.org/ver10/media/wsdl">
<StreamSetup>
<Stream xmlns="http://www.onvif.org/ver10/schema">RTP-Unicast</Stream>
<Transport xmlns="http://www.onvif.org/ver10/schema">
<Protocol>UDP</Protocol>
</Transport>
</StreamSetup>
<ProfileToken>000</ProfileToken><
/GetStreamUri>
</soap:Body>
</soap:Envelope>

5、接受(recv)数据

HTTP/1.1 200 OK
Server: gSOAP/2.7
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 3151
Connection: close

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" 
xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xs="http://www.w3.org/2000/10/XMLSchema" 
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 
xmlns:wsa5="http://www.w3.org/2005/08/addressing" 
xmlns:xop="http://www.w3.org/2004/08/xop/include" 
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" 
xmlns:tt="http://www.onvif.org/ver10/schema" 
xmlns:ns1="http://www.w3.org/2005/05/xmlmime" 
xmlns:wstop="http://docs.oasis-open.org/wsn/t-1" 
xmlns:ns7="http://docs.oasis-open.org/wsrf/r-2" 
xmlns:ns2="http://docs.oasis-open.org/wsrf/bf-2" 
xmlns:dndl="http://www.onvif.org/ver10/network/wsdl/DiscoveryLookupBinding" 
xmlns:dnrd="http://www.onvif.org/ver10/network/wsdl/RemoteDiscoveryBinding" 
xmlns:d="http://schemas.xmlsoap.org/ws/2005/04/discovery" 
xmlns:dn="http://www.onvif.org/ver10/network/wsdl" 
xmlns:ns10="http://www.onvif.org/ver10/replay/wsdl" 
xmlns:ns11="http://www.onvif.org/ver10/search/wsdl" 
xmlns:ns13="http://www.onvif.org/ver20/analytics/wsdl/RuleEngineBinding" 
xmlns:ns14="http://www.onvif.org/ver20/analytics/wsdl/AnalyticsEngineBinding" 
xmlns:tan="http://www.onvif.org/ver20/analytics/wsdl" 
xmlns:ns15="http://www.onvif.org/ver10/events/wsdl/PullPointSubscriptionBinding" 
xmlns:ns16="http://www.onvif.org/ver10/events/wsdl/EventBinding" 
xmlns:tev="http://www.onvif.org/ver10/events/wsdl" 
xmlns:ns17="http://www.onvif.org/ver10/events/wsdl/SubscriptionManagerBinding" 
xmlns:ns18="http://www.onvif.org/ver10/events/wsdl/NotificationProducerBinding" 
xmlns:ns19="http://www.onvif.org/ver10/events/wsdl/NotificationConsumerBinding" 
xmlns:ns20="http://www.onvif.org/ver10/events/wsdl/PullPointBinding" 
xmlns:ns21="http://www.onvif.org/ver10/events/wsdl/CreatePullPointBinding" 
xmlns:ns22="http://www.onvif.org/ver10/events/wsdl/PausableSubscriptionManagerBinding" 
xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2" 
xmlns:ns3="http://www.onvif.org/ver10/analyticsdevice/wsdl" 
xmlns:ns4="http://www.onvif.org/ver10/deviceIO/wsdl" 
xmlns:ns5="http://www.onvif.org/ver10/display/wsdl" 
xmlns:ns8="http://www.onvif.org/ver10/receiver/wsdl" 
xmlns:ns9="http://www.onvif.org/ver10/recording/wsdl" 
xmlns:tds="http://www.onvif.org/ver10/device/wsdl" 
xmlns:timg="http://www.onvif.org/ver20/imaging/wsdl" 
xmlns:tptz="http://www.onvif.org/ver20/ptz/wsdl" 
xmlns:trt="http://www.onvif.org/ver10/media/wsdl" 
xmlns:trt2="http://www.onvif.org/ver20/media/wsdl" 
xmlns:ter="http://www.onvif.org/ver10/error" 
xmlns:tns1="http://www.onvif.org/ver10/topics" 
xmlns:tnsn="http://www.eventextension.com/2011/event/topics">
  <SOAP-ENV:Body>
    <trt:GetStreamUriResponse>
      <trt:MediaUri>
        <tt:Uri>rtsp://192.168.100.123:554/user=admin_password=tlJwpbo6_channel=1_stream=0.sdp?real_stream</tt:Uri>
        <tt:InvalidAfterConnect>false</tt:InvalidAfterConnect>
        <tt:InvalidAfterReboot>false</tt:InvalidAfterReboot>
        <tt:Timeout>PT10S</tt:Timeout>
      </trt:MediaUri>
    </trt:GetStreamUriResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

6、解析上面接受到数据得到URL:

rtsp://192.168.100.123:554/user=admin_password=tlJwpbo6_channel=1_stream=0.sdp?real_stream

通过这个URL使用VLC播放视频流: