2012-03-14 124 views
3

我是這方面的新手...我需要爲Android創建SIP客戶端...我在開發人員站點進行了演示,並創建了一些正在工作的應用程序。現在我需要找到一些方法如何改變音頻編解碼器...默認編解碼器是g711 ...我怎麼能改變它?你能提供一些說明,代碼或教程嗎?任何幫助表示讚賞...在此先感謝... 在這個類中我找不到任何幫助我的東西:http://developer.android.com/reference/android/net/sip/package-summary.htmlSIP如何更改音頻編碼解碼器

回答

3

G711實際上是PCM編解碼器的另一個名稱,它具有2個壓縮算法(相同的壓縮率) - 被稱爲PCMA和PCMU。這些是最標準和廣泛使用的音頻編解碼器,從任何 SIP服務器開箱即用支持。例如,它們相當老舊,與Speex相比,不提供良好的壓縮。

SIP通信中的音頻編解碼器通過SDP協議在INVITE消息中進行協商。 更改音頻編碼解碼器將需要以下步驟:

實施音頻編解碼器。

將(在應用程序級別)此編解碼器整合到您的SIP客戶端中。高級語言 - 您擁有網絡層(UDP最有可能),而不是數據層(您處理RTP數據包的地方)和SIP消息。

您需要一種機制將RTP數據包連接到您想要使用的音頻編解碼器。 另一方面,您需要使用SDP協議與所有參與者協商音頻編解碼器。

這裏有一些例子:imsdroid,csipsimple,sipdroid等,但它們使用外部sip-stack實現(doubango,mjsip)。 AFAIK Android的sip-stack現在不是很通用。

+0

感謝您的答案...在android sip堆棧不可能現在更改編解碼器?我需要嘗試別的東西,如果我需要G729例如?我是這方面的新手...... :( – Jovan 2012-03-14 13:20:27

+1

我沒有使用Android sip-stack,因爲它不支持較老的android手機,它現在佔據了大部分市場。我不知道Android sip -stack提供,我只是通過API瀏覽並閱讀了一些評論,我認爲現在沒有人在使用它,並且考慮到這一點 - 常見問題的知識和文檔也處於低級別。 – hovanessyan 2012-03-14 13:28:19

+1

好的......謝謝你的時間,我花了四天的時間,並沒有找到解決方案......我會盡力回顧你提到的一些項目......再次感謝 – Jovan 2012-03-14 14:59:19

1

也許你可以使用與SIP相關的API:android.net.rtp包含易於使用的AudioStream,AudioGroup和AudioCodec類。這些的最後一個可以讓你選擇你想要的編解碼器。 http://developer.android.com/reference/android/net/rtp/AudioStream.html

警告:這些僅在Honeycomb之後引入,所以如果使用它,則只能針對安裝此版本或更高版本的設備。考慮到你已經在使用android.net.sip(薑餅以後),這應該不是什麼大問題。