原創文章,引用請保證原文完整性,尊重作者勞動,原文地址http://www.cnblogs.com/qq1269122125/p/3930018.html,qq:1269122125。
SIP協議在安防視頻系統的國標中,有重要應用。從本文開始,講解並開發一套SIP協議組件。現在一般在開發這類系統時,采用的exosip2和osip2庫,這是個開源的SIP協議棧庫。實際遵從國標開發時並不能滿足實際的需要。所以本文依照GBT28181開發的一套SIP組件。該組件支持代理服務器UAS和代理客戶端UAC兩重角色。組件實現了RFC3261基本的會話初始協議(SIP協議)的一個功能子集。SIP組件中實現了REGISTER,MESSAGE,NOTIFY,SUBSCRIBE,INVITE,ACK,BYE,CALL_MESSAGE等 SIP通信方法。
一.本系列文章的參考標准
1.電網視頻監控系統及接口 第1部分:技術要求
2.GB/T28181-2011 《安全防范視頻監控聯網系統信息傳輸、交換、控制技術要求》
二.開發思路
主要包括三個部分,SIP服務器(UAS)測試程序,SIP客戶端代理(UAC)測試程序,SIP開發組件。講解過程主要按照SIP功能子集的方法(REGISTER,MESSAGE,NOTIFY,SUBSCRIBE,INVITE,ACK,BYE,CALL_MESSAGE)一步步開展,一個功能一個功能添加,最終完成SIP功能組件的開發。
三.開發環境搭建
開發操作系統:centos 6.0+32bit
開發語言:c/c++
開發工具:eclipse +CDT
項目依賴:osip2 osipparser2 eXosip2 loki boost_thread
依賴版本及下載地址:
依賴庫下載完成后,在Centos中安裝好。主要庫文件的安裝路徑,如果不是PATH中能找到的路徑,在下面的開發工程中還需要設定-L選項(庫查找路徑)和-I(庫開發頭文件查找路徑)選項。
四.開發工程搭建
打開centos中eclipse,新建以下工程。
1.新建GBT28181SipComponent動態.so庫工程
一路點next即可。
2.UAS測試程序
一路點next即可。
3.UAS工程文件下建兩個文件夾,存放GBT28181SipComponent庫的頭文件和.so文件。
4.GBT28181SipComponent庫工程中添加 IGBT28181Comm.h,IGBT28181Comm.cpp。GBT28181Comm.h作為庫和外界通訊的接口。
5.GBT28181SipComponent庫工程中添加工程依賴項。osip2 osipparser2 eXosip2 loki boost_thread。路徑要不要添加取決於安裝情況。筆者安裝在系統默認目錄所以不需要指定路徑。
6.GBT28181SipComponent庫工程中添加程序編譯后,拷貝到UAS_test和UAC_test相應的lib目錄下。
如拷貝到UAS_test的Lib目錄下。
cp ./libGBT28181SipComponent.so ../../UAS_test/lib/GBT28181SipComponent ;
cp ../src/IGBT28181Comm.h ../../UAS_test/lib/include
拷貝到UAC_test的Lib目錄下。
cp ./libGBT28181SipComponent.so ../../UAC_test/lib/GBT28181SipComponent ;
cp ../src/IGBT28181Comm.h ../../UAC_test/lib/include
這樣庫編譯完成即完成.so和接口文件的拷貝工作。
7.UAS_test工程中添加依賴庫libGBT28181SipComponent.so和頭文件IGBT28181Comm.h 的應用目錄。
8.新建UAC_test工程,具體步驟和UAS_test大致相同。主要新建lib目錄,添加依賴庫及目錄路徑。具體步驟在此省略。
以上為本次SIP協議組件開發的基本環境框架。從下一節開始一步步的完成該SIP組件的開發與測試。