用Java實現網路語音訊號傳送

來源:互聯網
上載者:User

一、引言

Java是一門適合於分散式運算環境、尤其是Internet程式設計的語言。這不僅僅在於java具有很好的安全性和可移植性,還在於java為Internet編程提供了豐富的網路類庫的支援。利用這些網路類庫,可以輕鬆編寫多種類型的網路通訊程式。然而由於某些限制,Java在傳輸多媒體資訊方面的應用不是很廣,大部分的應用都集中在網路上傳輸語音等音頻訊號的方面。傳輸音頻訊號應用方案一般有兩種,一是應用於資料廣播的多對一傳輸,例如音頻資料服務器向數個用戶端發送音頻資料訊號,其最廣泛的應用則是某些網上的IP電話,大家經常可以看到不少這種提供線上IP電話語音的網站的用戶端都是使用的嵌在網頁上的Java Applet程式,用來實現撥號、通話等等基本的網路電話功能; 第二種方案則是我們今天要涉及的部分,一對一的音頻訊號資料的傳輸。這種方案的應用範圍更廣。大家都去過語音交談室,大部分的語音交談室的語音交談功能的實現就是使用的Java技術,大家對這樣網頁的原始碼分析一下就可以發現這一點。

我曾開發一個項目,涉及使用java來實現在網路上傳輸語音資料。開發中遇到不少問題,而且在互連網上發現關於java語音傳輸的資料比較少,尋找了許多天,最終從一個開放原始碼的一個簡單的Answer Machine 示範程式中獲得瞭解決問題的方法。今天我就把我在點對點傳輸音頻訊號方面的一些經驗拿出來,與大家共同探討這方面的問題。

二、存在的問題

在網路上傳輸音訊方面存在的問題主要可以歸納為以下幾點:

1 雙方之間的網路連接

要進行頻資料的傳輸,首先就是要建立資料連結。常用的通訊協議中,TCP較可靠,所以用在不允許資料丟失的應用上。而UDP則較多應用於處理速度要求較快、資料轉送可靠性要求不是很高的應用上,如資料廣播。通訊協定的選擇取決於我們所要做的應用的類型。怎樣建立網路連接,穩定的接收和發送音頻訊號的資料流是關鍵。

2 音頻訊號的採集以及回放

在進行音頻訊號的採集中我們必須考慮到採樣率的問題,聲音訊號的採樣率有8Khz、16Khz、32Khz、44Khz等,每種資料採樣慮產生的資料量都不一樣,越高的採樣率產生的資料量越大,所以我們要選擇合適的採樣率以適應網路的頻寬。

3 音頻數字訊號的編碼與解碼。

如果把直接採集到的音頻訊號資料流在網路上進行傳輸,它所佔有的頻寬也是十分大的,以8Khz的採樣率採集14位的音頻資料那麼就有以下這樣的一個式子:

14 bit * 8000/second=112,000 bits/second or112kbps

從中我們可以看出以這樣的方式傳輸音頻資料,每秒需要向網路中發送112kb的資料。所以。從節省頻寬的角度考慮,我們很有必要對這樣的資料進行壓縮。對多媒體訊號的壓縮我們有許多可以選擇的格式,如mp2、mp3、GSM等等。同樣,我們這裡也存在一個對壓縮格式進行選擇的問題,考慮到音頻資料轉送的及時性,對傳輸的音頻資料品質的要求,以及各種壓縮格式的壓縮比率以及進行壓縮和解壓縮所要耗費的系統資源等方面問題,選擇合適的壓縮格式就顯得尤為重要。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.