




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 windows下基于pjsip的視頻通話控件的研究與實(shí)現(xiàn) 李玲玲摘要:pjsip是一個(gè)開源的sip協(xié)議棧,作為基于sip的一個(gè)多媒體通信框架,它提供了非常清晰的api,實(shí)現(xiàn)了sip、sdp、rtp、stun、turn、ice等協(xié)議,以及nat穿越的功能。pjsip具有非常好的移植性,幾乎支持現(xiàn)今所有系統(tǒng):從桌面系統(tǒng)、嵌入式系統(tǒng)到智能手機(jī)。pjsip支持語音、視頻、狀態(tài)呈現(xiàn)和即時(shí)通訊。pjsip具有非常完善的文檔資料,對(duì)開發(fā)者是很友好的。本文基于pjsip協(xié)議實(shí)現(xiàn)了windows平臺(tái)下的音視頻通信系統(tǒng),其功能包括sip賬號(hào)注冊(cè)、音視頻通信、狀
2、態(tài)呈現(xiàn)等。通過在windows 7操作系統(tǒng)下的測(cè)試表明,sip通信系統(tǒng)的各項(xiàng)功能運(yùn)行穩(wěn)定,對(duì)pjsip修改的部分也達(dá)到了預(yù)期的效果。系統(tǒng)還具有良好的可擴(kuò)展性,后期可以在此基礎(chǔ)上進(jìn)行更多的功能實(shí)現(xiàn)。關(guān)鍵詞:pjsip;freeswitch;sip:tn911-34 :a :1009-3044(2018)23-0241-03abstract: pjsip is a free and open source multimedia communication protocol stack. as a multimedia communication framework based on sip, pj
3、sip provides a very clear api, and implements standard based protocols such as sip, sdp, rtp, stun , turn, ice, and nat traversal function. pjsip has a very good portability, almost supporting all the existing systems ranging from desktops, embedded systems to mobile handsets.it supports audio, vide
4、o,presence, and instant messaging,pjsip has perfect documents and is very friendly to developers.based on the pjsip stack,i realize an audio and video communication system in the windows platform.its functions include the sip account registration,audio and video communication,status presence,etc.tes
5、ts under windows 7 operating systems demonstrate that all function of the sip communication system works stably,the modification of pjsip also achieved the expected affect.the system also has good extensibility and we can add more functions to it in the future.key words: pjsip; freeswitch; sip1 pjsi
6、p的簡(jiǎn)介pjsip是一個(gè)開源的sip協(xié)議棧,支持多種sip的擴(kuò)展功能,作為基于sip協(xié)議的一個(gè)多媒體通信框架,它提供了非常清晰的api,實(shí)現(xiàn)了sdp、rtp、sip、stun、turn、ice等協(xié)議,以及nat穿越的功能。并且具有非常好的移植性,幾乎支持現(xiàn)今所有系統(tǒng):從桌面系統(tǒng)、嵌入式系統(tǒng)到智能手機(jī)。同時(shí)支持語音、視頻、狀態(tài)呈現(xiàn)和即時(shí)通訊。它具有非常完善的文檔,對(duì)開發(fā)者是很友好的。pjsip由benny prijono、perry ismangil在2005年創(chuàng)建,之后不久,nanang izzuddin、sauw ming加入開發(fā)團(tuán)隊(duì)。2006年成立teluu ltd.,成為開發(fā)和維護(hù)pjs
7、ip的公司。pjsip采用雙license:gplv2以及商業(yè)許可證,開發(fā)者可以根據(jù)需要選擇不同的license。1.1 pjsip框架pjsip包括:pjsip - open source sip stack開源的sip協(xié)議棧、pjmedia - open source media stack開源的媒體棧、pjnath - open source nat traversal helper library開源的nat-t輔助庫(kù)、pjlib - util - auxiliary library輔助工具庫(kù)、pjlib - ultra portable base framework library基
8、礎(chǔ)框架庫(kù)、pjsua-lib等模塊。其中pjsip包含:core、simple、ua三個(gè)模塊,在pjmedia中包含了codec模塊。pjsip的框架圖如圖1所示。1.2 pjlib框架pjlib是整個(gè)pjsip庫(kù)的基礎(chǔ),所有的子模塊都是依賴于pjlib,它主要實(shí)現(xiàn)對(duì)平臺(tái)的抽象,屏蔽了不同操作系統(tǒng)之間的差異,向上為pjsip框架的業(yè)務(wù)相關(guān)模塊提供統(tǒng)一的接口。pjlib提供的接口涉及如下幾個(gè)方面:1) 內(nèi)存池方式的內(nèi)存分配。2) os抽象。3) 網(wǎng)絡(luò)相關(guān)的支持。4) 時(shí)間管理。5) 各種工具性的數(shù)據(jù)結(jié)構(gòu)。6) 異常處理。7) log機(jī)制。8) 隨機(jī)數(shù)及guid的產(chǎn)生。1.3 pjlib-util
9、pjlib-util是輔助工具庫(kù)。提供的輔助工具包括:1) 提供命令行操作的接口。2) 提供加密算法,如base64、crc32、md5、sha1等。3) 文本跟字符串處理。4) dns協(xié)議處理。5) 文件讀寫的處理,如json、xml解析處理。1.4 pjnathpjnath是開源的nat穿越輔助庫(kù),提供了標(biāo)準(zhǔn)的基于nat的穿越方案。1.5 pjmediapjmedia是開源的媒體棧,支持很多音視頻格式的處理、具有移植性強(qiáng)、代碼精簡(jiǎn)、媒體處理質(zhì)量?jī)?yōu)秀、對(duì)硬件支持度高以及擴(kuò)展性良好等優(yōu)點(diǎn)。pjmedia還對(duì)sip中的sdp協(xié)商提供部分支持,主要為sip協(xié)議提供可傳輸?shù)拿襟w類型。在通信雙方的sd
10、p溝通協(xié)商過程中,最終商定的傳輸媒體類型主要由pjmedia模塊提供支持。1.6 pjmedia-codecpjmedia-codec是一個(gè)靜態(tài)庫(kù),它包含了各種編解碼器的實(shí)現(xiàn),對(duì)上層模塊通過提供pjmedia-codec框架來便于進(jìn)行編解碼處理,該框架屏蔽了下層各個(gè)編解碼器的細(xì)節(jié)。1.7 pjsip、pjsip-simplepjsip、pjsip-simple是實(shí)現(xiàn)標(biāo)準(zhǔn)sip協(xié)議以及simple擴(kuò)展協(xié)議的sip棧。1.8 pjsip-lib、pjsua-libpjsip-lib以及pjsua-lib主要包含pjsua2和pjsua。其中pjsua2是面向?qū)ο蟮腸+語言實(shí)現(xiàn),pjsua是面向過程
11、的c語言實(shí)現(xiàn)。pjsua2封裝了pjsua,為上層應(yīng)用提供面向?qū)ο蟮慕涌?。這兩個(gè)庫(kù)封裝了pjsip框架底層的sip棧、媒體處理及nat穿越等功能,提供更高級(jí)的面向網(wǎng)絡(luò)電話業(yè)務(wù)的接口。2 pjsip配置和編譯從下載如下文件:linphone-3.5.2.tar.gz、libexosip2-3.3.0.tar.gz、libosip2-3.3.0.tar.gz、 speex-1.2rc1.tar.gz、linphone-deps-win32-120218.zip。其中l(wèi)inphone-3.5.2.tar.gz主要包含linphone、ortp、mediastreame
12、r2,libosip2-3.3.0.tar.gz主要包含osip、osipparser2,libexosip2-3.3.0.tar.gz為exosip2; speex-1.2rc1.tar.gz在編譯mediastreamer庫(kù)時(shí)需要。linphone-deps-win32-120218.zip包含運(yùn)行所需的庫(kù)及配置文件等。2.1 編譯osipparser2庫(kù)、exosip庫(kù)、osip庫(kù)這三個(gè)庫(kù)下載的只有源碼,沒有vs項(xiàng)目文件,需要新建osipparser2、exosip、osip三個(gè)項(xiàng)目。以osippparser2為例,創(chuàng)建空的動(dòng)態(tài)庫(kù)項(xiàng)目,項(xiàng)目名為osipparser2,將libosip2-
13、3.1.0/src/osipparser2文件夾下的文件全部復(fù)制到剛創(chuàng)建的項(xiàng)目根目錄下,并將所有的源文件和頭文件都加入項(xiàng)目?jī)?nèi),同時(shí)將libosip2-3.1.0中的include文件夾導(dǎo)入到創(chuàng)建的工程中,編譯鏈接即可生成osipparser2.dll。以osippparser2為例,創(chuàng)建空的靜態(tài)庫(kù)項(xiàng)目,項(xiàng)目名為osipparser2,將libosip2-3.1.0/src/osipparser2文件夾下的文件全部復(fù)制到剛創(chuàng)建的項(xiàng)目根目錄下,并將所有的源文件和頭文件都加入項(xiàng)目?jī)?nèi),同時(shí)將libosip2-3.1.0中的include文件夾導(dǎo)入到創(chuàng)建的工程中,編譯鏈接即可生成osipparser2.
14、lib。要注意的是此處需新建def文件,在文件中添加要導(dǎo)出的接口函數(shù)。osip2和exosip方法類似,不再贅述。2.2 編譯ortp庫(kù)、mediastreamer2庫(kù)ortp源碼包中已經(jīng)有對(duì)應(yīng)的vs項(xiàng)目,無需做任何修改可直接編譯運(yùn)行生成對(duì)應(yīng)的庫(kù)文件。mediastreamer2源碼包雖然有vs項(xiàng)目,但還需要稍作修改才可編譯:在項(xiàng)目屬性中添加一條宏定義:ms2_internal,然后刪除文件gsm.c,再添加qualityindicator.c、bitratecontrol.c、audioconference.c、eventqueue.c、bitratedriver.c 到工程中。2.3 創(chuàng)建
15、phonecore在linphone/coreapi中沒有提供相應(yīng)的vs項(xiàng)目,需新建動(dòng)態(tài)鏈接庫(kù)項(xiàng)目,將linphone/coreapi文件夾中除test_lsd.c、test_ecc.c 、tunnelmanager.hh、linphonecore_jni.cc、sipwizard.c、tunnelmanager.cc文件外的其他文件都添加到項(xiàng)目中,再新建def文件,在文件中添加需要用到的接口函數(shù)。由于自定義的unistd.h,需要將頭文件引用方式由#include 改為#include "unistd.h"。在lpconfig.c文件中找到: if (chmod(file
16、name, s_irusr | s_iwusr) = -1),并注釋掉該if分支的所有語句。在sal_exosip2.c文件中找到:exosip_set_tls_ctx(&tlsctx;),注釋掉該調(diào)用語句。此時(shí)編譯出現(xiàn)錯(cuò)誤提示信息: too many initializers,定位到源碼sipsetup linphone_sip_login中發(fā)現(xiàn)其賦值的個(gè)數(shù)比定義的個(gè)數(shù)多,這里需要?jiǎng)h除sip_login_init_instance和sip_login_do_logout之間的3個(gè)的null。然后修改misc.c,在文件中找到lp_spawn_command_line_sync函數(shù),由
17、于在windows平臺(tái)下不支持popene及pclose函數(shù),需要將其中的第一行做如下修改:#if !defined(_win32_wce) && !defined(_win32)。此外,在編譯過程中出現(xiàn)“未聲明的標(biāo)示符”或“將此類型用作表達(dá)式非法”等錯(cuò)誤信息時(shí),這是找不到函數(shù)的定義所致,需將函數(shù)的定義放在文件頭。3 sip服務(wù)器的選擇及運(yùn)行結(jié)果3.1 sip服務(wù)器的選擇本系統(tǒng)中選擇開源的freeswitch。freeswitch是一種功能強(qiáng)大的voip開源軟交換機(jī),兼容多種主流協(xié)議,包括sip、h.323、h.261、h.263、h.264、mp4等,它具有以下幾個(gè)特點(diǎn):1)
18、采用的是模塊化設(shè)計(jì)理念,通過使用特定的接口進(jìn)行功能擴(kuò)展,從而減小了系統(tǒng)核心對(duì)其它功能模塊的依賴性。2)提供特定的api支持業(yè)務(wù)控制邏輯,系統(tǒng)控制流程支持使用javascript、perl等腳本語言實(shí)現(xiàn)。3)擁有中心化的可擴(kuò)展標(biāo)記語言(xml)注冊(cè)表,從而使文件查詢解析更加方便。4)與asterisk、kamailio等同類型的voip軟交換平臺(tái)相比較,freeswitch能夠并發(fā)支持更多的會(huì)話連接。3.2 運(yùn)行結(jié)果4 結(jié)束語本文中對(duì)pjsip的源碼做了部分的修改,能夠?qū)崿F(xiàn)windows平臺(tái)下的雙向720p視頻通話功能,還有很多待優(yōu)化的地方,如三方通話等功能,后期將繼續(xù)關(guān)注pjsip的發(fā)展,希望能夠在pjsip領(lǐng)域得到更進(jìn)一步的提高。參考文獻(xiàn):1 鄧凱. 基于android平臺(tái)的pjsip協(xié)議棧優(yōu)化設(shè)計(jì)與實(shí)現(xiàn)d. 北京: 北京郵電大學(xué), 2016.2 凌小榮. 基于sip網(wǎng)絡(luò)音視頻通信的研究與實(shí)現(xiàn)d. 廣州: 華南理工大學(xué), 2014.3 陳歡. 支持移動(dòng)終端的sip客戶端設(shè)計(jì)與實(shí)現(xiàn)d. 沈陽: 中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 聚焦海上成品油運(yùn)輸合同新篇章
- 瑜伽課程預(yù)約合同
- 酒店經(jīng)營(yíng)轉(zhuǎn)讓合同范本
- 草莓購(gòu)銷合同范本
- 工程項(xiàng)目合同廉政承諾書范文
- 誠(chéng)信標(biāo)志合作合同范本
- 人工智能在醫(yī)療保健中的創(chuàng)新考核試卷
- 木材切削刀具的選用與磨損分析考核試卷
- 云母制品在太陽能熱水器中的應(yīng)用考核試卷
- 安全網(wǎng)絡(luò)數(shù)據(jù)安全應(yīng)急響應(yīng)考核試卷
- 2025年上半年潛江市城市建設(shè)發(fā)展集團(tuán)招聘工作人員【52人】易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 旋轉(zhuǎn)類機(jī)電設(shè)備故障預(yù)測(cè)、診斷研究
- 新媒體營(yíng)銷(第三版) 課件全套 林海 項(xiàng)目1-6 新媒體營(yíng)銷認(rèn)知-新媒體營(yíng)銷數(shù)據(jù)分析
- 愚公移山英文 -中國(guó)故事英文版課件
- DB52∕T 1413-2019 黎平牛-行業(yè)標(biāo)準(zhǔn)
- 公園綠化養(yǎng)護(hù)景觀綠化維護(hù)項(xiàng)目迎接重大節(jié)會(huì)活動(dòng)的保障措施
- 國(guó)內(nèi)外旅游公共服務(wù)研究的文獻(xiàn)綜述
- 集團(tuán)公司各職能部管控分權(quán)手冊(cè)
- 機(jī)車電測(cè)儀表使用及檢修
- PMS顏色對(duì)照表
- 2012年北京大學(xué)醫(yī)學(xué)部外國(guó)留學(xué)生本科入學(xué)考試
評(píng)論
0/150
提交評(píng)論