1. 程式人生 > >Linux下onvi支援h265環境的的搭建

Linux下onvi支援h265環境的的搭建

 1. 下載gsoap  :http://www.genivia.com/products.html#notice,既Open Source gSOAP版本,並解壓進入目錄安裝,configure後面的選項可以根據自己的需求新增,--prefix後面填寫的gsoa安裝所在的路徑,我安裝的是當前的路徑,如果prefix出現安裝錯誤,則需要把路徑改成絕對路徑。

  •  ./configure --enable-ipv6 --enable-debug --prefix=./
  • make
  • make install 

 2. gsoap雖然安裝完成,但是你還要檢查你的linux下是否也安裝了以下內容,沒有的話要安裝一下,gsoap才能正常使用:

3.. 把gsoap-2.8/gsoap/typemap.dat也拷貝到一個新建工作目錄下,並修改該檔案的內容,在名稱空間已經存在的trt下,新增支援h265的程式碼行 tr2     =

http://www.onvif.org/ver20/media/wsdl ,tr2 可以自己隨便命名,以後關於h265介面的都會以tr2名字出現。

4.生成onvif.h:

    線上生成:

  • (http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl http://www.onvif.org/onvif/ver10/events/wsdl/event.wsdl http://www.onvif.org/onvif/ver10/display.wsdl http://www.onvif.org/onvif/ver10/deviceio.wsdl http://www.onvif.org/onvif/ver20/imaging/wsdl/imaging.wsdl http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl http://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl http://www.onvif.org/onvif/ver10/receiver.wsdl http://www.onvif.org/onvif/ver10/recording.wsdl http://www.onvif.org/onvif/ver10/search.wsdl http://www.onvif.org/onvif/ver10/network/wsdl/remotediscovery.wsdl http://www.onvif.org/onvif/ver10/replay.wsdl http://www.onvif.org/onvif/ver20/analytics/wsdl/analytics.wsdl http://www.onvif.org/onvif/ver10/analyticsdevice.wsdl http://www.onvif.org/onvif/ver10/schema/onvif.xsd http://www.onvif.org/ver10/actionengine.wsdl http://www.onvif.org/ver10/pacs/accesscontrol.wsdl http://www.onvif.org/ver10/pacs/doorcontrol.wsdl http://www.onvif.org/ver10/advancedsecurity/wsdl/advancedsecurity.wsdl http://www.onvif.org/ver10/accessrules/wsdl/accessrules.wsdl http://www.onvif.org/ver10/credential/wsdl/credential.wsdl http://www.onvif.org/ver10/schedule/wsdl/schedule.wsdl)
  • 可以根據專案功能結合所需要的wsdl網址來生成onvif.h,可以減小編譯時間和減少整體框架大小: http://www.onvif.org/onvif/ver10/network/wsdl/remotediscovery.wsdl:用於發現裝置http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl :用於獲取裝置引數http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl :用於獲取視訊流地址  https://www.onvif.org/ver20/media/wsdl/media.wsdl:用於獲取h265視訊流地址 http://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl:用於裝置的PTZ控制 
     
  • wsdl2h -o onvif.h -c -s -t typemap.dat http://www.onvif.org/onvif/ver10/network/wsdl/remotediscovery.wsdl  http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl https://www.onvif.org/ver20/media/wsdl/media.wsdl  http://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl

   離線生成:

  • 離線生成的好處是可以生成gsoap框架後,根據所需要的功能去裁剪 *.wsdl及onvif.xsd 來減小整體框架的大小。首先結合專案功能下載相關的wsdl檔案:https://www.onvif.org/profiles/specifications/,右擊  *.wsdl,連結另存為即可儲存成本地檔案,也可以去上面線上生成wsdl網址右擊檢視原始碼,另存為即可儲存成wsdl檔案。同時也要下載相關的 *.xsd檔案。
  • wsdl2h -o onvif.h -c -s -t typemap.dat -I gsoap-2.8/gsoap -I gsoap-2.8/gsoap/import/ remotediscovery.wsdl devicemgmt.wsdl media.wsdl media2.wsdl ptz.wsdl 
  • (media2.wsdl 是支援h265獲取視訊流地址:https://www.onvif.org/ver20/media/wsdl/media.wsdl)

5. 加入鑑權功能

  • 在onvif.h的第100行加上 #import "wsse.h"

6.gsoap-2.8\gsoap\import路徑下的wsa5.h中的SOAP_ENV__Fault結構體註釋掉或改為其他名字,如SOAP_ENV__Fault_alex。

7.生成 *.c檔案、*.h和名稱空間*.nsmap:

  • 將gsoap-2.8/gsoap/import/目錄拷貝到當前工作目錄
  • soapcpp2 -c -x -I gsoap-2.8/gsoap -I ./import onvif.h
  • -C :僅生成客戶端程式碼

    -S:僅生成伺服器端程式碼

    -L:不要產生soapClientLib.c和soapServerLib.c檔案

    - c: 產生純C程式碼,否則是C++程式碼

    -I:指定import路徑

    -x:不要產生XML示例檔案

8. 註釋stdsoap.c如下程式碼:

/*

#ifdef SOAP_DEBUG

#ifdef TANDEM_NONSTOP

soap_set_test_logfile(soap, "TESTLOG");

soap_set_sent_logfile(soap, "SENTLOG");

soap_set_recv_logfile(soap, "RECVLOG");

#else

soap_set_test_logfile(soap, "TEST.log");

soap_set_sent_logfile(soap, "SENT.log");

soap_set_recv_logfile(soap, "RECV.log");

#endif

#endif

*/

和修改

if (/*s == r || *r || */n < -128 || n > 127)

9.將gsoap-2.8\gsoap目錄下的兩個檔案:stdsoap2.c、stdsoap2.h拷貝到你工作目錄下

10. 接下來可以用生成好的框架來完成搜尋裝置、獲取h265的rtsp地址及其其他相應的功能。