Speex 同時適用於 Ios 與 Android 【代碼篇 二】

來源:互聯網
上載者:User

標籤:android   speex   語音壓縮   

書接上一回。
前文提到如何利用協議編碼好音頻pcm資料,使其在解碼的時候可以用於ios系統與Android系統。

現在是解碼部分,解碼部分主要是擷取到.spx檔案的全部位元組,然後根據前文的協議,先擷取到.spx的頭資訊,在頭資訊中擷取到音訊相關參數,然後初始化播放器,再把每一幀解碼出來進行播放。

關於協議部分,可以有很多種協議方式,可以沿用speex_header.h定義的方式也可以,我選擇了最方便的一種。

以下幾個參數特別說明一下,因為直接關係到解碼的成敗。

位元速率:160

位元速率為160,證明錄音的時候,每一幀來源資料為160 個位元組。

幀大小為假設的20,證明每一幀160個位元組的來源資料經過編碼壓縮後轉化為20位元組的spx檔案。

即:

因此解碼的時候,要先擷取20位元組的spx資料,解碼出160個位元組的來源資料,然後再進行播放。

byte[] endecode = new byte[65536];                    for(int packagecount = 0 ;mDatapro<=(int)spxdatalength;packagecount++){                        dis.readFully(endecode,0, frameSize);                        Log.d(Speex.SPEEX_LOG, "mDatapro="+mDatapro);                        mDatapro+=frameSize;                        int decsize;                        short[] decoded = new short[160];                        if((decsize=speexDecoder.decode(endecode, decoded, 160))>0){                            Log.d(Speex.SPEEX_LOG, "decsize size="+decsize);                            Log.d(Speex.SPEEX_LOG, "decoded size="+decoded.length);                            Log.d(Speex.SPEEX_LOG, "decoded ="+decoded);                            track.write(decoded, 0, decsize);                            track.play();                        }                    }

每一次把長度為frameSize的資料讀到endecode中,然後通過speex的decode方法,擷取到來源資料decoded,再把decoded放到播放器中進行播放。

Demo地址:
csdn: http://download.csdn.net/detail/a_asinceo/8879125
git :https://github.com/ParkTJT/Speex

最後上張demo的:

至此,該demo已經完成,大家可以根據自己的需求再進行處理,特別頭資訊部分,可以加密處理,或增加長度標示。
希望可以幫到大家理解好speex的用法。

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

Speex 同時適用於 Ios 與 Android 【代碼篇 二】

聯繫我們

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