SIP與RTP綜合應用4

來源:互聯網
上載者:User

搭建好環境,測試通過,熟悉協議之後, 就是自己做一個這樣的平台了。

伺服器想都不用想,直接用Tixbox,重頭寫不現實。

 至於用戶端,一般的程式架構應該如下:

一 協議部分:

主要處理sip的註冊,呼叫,接收,掛機等功能,所有的協議都差不多,隨便選一個就行。

二 媒體傳輸,這部分比較複雜 :

1 音視頻採集

2 音視頻編碼

3 音視頻編碼後組RTP

4 RTP/RTCP發送

5 RTP/RTCP接收

6 從RTP解包還原成編碼後的音視頻

7 音視頻解碼

8 音視頻播放

一般如果分配任務,快速做一個用戶端,首先想到的就是找一個開源,編譯出來再修改。

不過,試了幾個,極度痛苦,分別說一下。

1 Linphone:

這個產品只能算一般,不過用到的lib非常不錯,exosip+osip為sip命令服務,ortp+mediastreamer2為流媒體服務。不過,編譯真是麻煩,別的不說,光mediastreamer2就用到了ffmpeg,gsm,ortp,srtp,openssl,speex, theora等,稀裡湖塗足足花了大半天時間把所有這些都編譯好,然後編譯ms2.lib時提示幾個連結出錯。因為我看到網上幾個文章說明是用vc2005輕鬆編譯出來的,我也用的vc2005。估計用mingw會簡單一些。不過,已經耗了近一天的時間,感覺不爽,放棄。估計是linphone估計搞的複雜,好讓antisip賣錢。

2 ekiga

這個需要ptlib,第一感覺這東西很麻煩,不過編譯時間出奇的順利(關鍵是官方提供的資料詳細,網友寫的文章也詳細)。然後編譯opal,也很順利。(只是佔用機器比較厲害,P4 2.6的占CPU極嚴重。不過,用的機器是聯想的超薄機箱那種,不排除官方弄個很爛的CPU冒充。因為換到另一個P4 3G,速度快上兩三倍)。

其實,編譯好opal,基本就可以了,它帶了很不錯的例子,撥打到電話接聽都不錯。

最後編譯ekiga時,需要交叉編譯,直接放棄掉,有那時間不如好好研究opal了。

3 其他

編譯了一下emiplib,這個庫寫的真不錯。雖然封裝的比較深,不過調用時,可以選擇比較靠上的類來調用,有點類似ACE。只是視頻格式少了一點。

回頭再看上面的一般結構,SIP部分不用操心,隨便找個庫就能達到目的,關鍵是媒體傳輸這部分。仔細看1-8這些部分,很多我們自己動手就可以做,其實我們並不需要一下完整的全功能的庫。

比如,音頻採集播放用DirectSound,視頻採用播放用DirectShow.編解碼用ffmpeg編譯出來的libavcodec,傳輸用jrtplib.這麼一看,只有3 音視頻編碼後組RTP和6 從RTP解包還原成編碼後的音視頻 這兩部分相對陌生,其他的都能找到成熟的代碼。基於這個想法,就不用上述開源產品,直接自己寫一個好了。

先做準備工作:

1 編譯好ffmpeg及所帶的libavcodec等幾個lib和dll,音視頻編解碼時需要。

2 利用DirectShow做視頻採集。播放就直接用GDI畫圖好了,簡潔。

3 聲音部分,參考Youtoo這個程式,連SIP都有了,用現成的exosip,osip,ms2.lib(這個庫不可使用視訊,否則就不用做上面那些苦力了)。音質相當不錯。

4 傳輸就用jrtplib,不過開始為了調試方便,自己寫的UDP socket。

這些準備工作做好,下一步就開始參考RFC進行RTP的組包和解包了。

 

更多技術文章請參看施昌權的個人網站: http://www.joyvc.cn

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.