安卓語音通話

來源:互聯網
上載者:User

標籤:ndk   編譯   amr   android   

這段時間在做公司的語音這一塊,主要是實現 手機端和pc端的語音通話問題(迴音和噪音消除暫時沒有考慮)用得是amr得方案。。

安卓手機端內建的錄音是可以直接錄成amr的格式,省去了壓縮的功夫。但是播放的時候如果要是直接播amr的話 只能通過檔案的方式進行,這就會導致延遲。

目前軟體是用得安卓自己提供的硬解碼方案,沒有使用自己的軟解碼,主要是如果軟解碼的話程式cpu佔用率會很高。

錄音方面用得是MediaRecord邊錄邊發送。基本上沒有痛點。

手機播放方面 由於MediaPlay  只能從檔案或者網路播放,沒有辦法直接從socket端直接播。。於是就採用了檔案的形式,socket端將接受的資料寫到檔案裡,然後給Mediaplayer 指定檔案描述符。這種方法的問題如果寫入檔案的資料太多了,難麼延遲就會很大,要是寫的資料量少,那麼播起來會有明顯的一頓一頓的,檔案這種方式必然會導致一定的延遲。

這兩天在測試的時候感覺檔案這種方式話音品質太差了,再者發現在錄音和播放語音的時候發現背景MediaServer的服務CPU 佔用率也不小,有可能是測試的手機對硬體解碼不太友好。於是想試試軟解碼的情況下運行如何。。

如果要進行軟解碼如要amr的解碼的代碼,PC端用得是amr標準代碼,如果要移植到安卓的話,需要將其用ndk編譯成動態庫,本以為很簡單,但是在處理android.mk的時候難倒我了,這麼make真不好寫,如於是乎重新學習了一下make,然後根據有android.mk的代碼好好研究了一番,終於完成了。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/4C/DB/wKioL1RGaLajAoVsAAIdGmgSVSg325.jpg" title="源碼目錄" alt="wKioL1RGaLajAoVsAAIdGmgSVSg325.jpg" />


源檔案太多了,原本對make就比較頭疼。


這是我得android.mk

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)amrtool_src := $(wildcard $(LOCAL_PATH)/amrtool/*.cpp)amrtool_src := $(amrtool_src:$(LOCAL_PATH)/amrtool/%=%)common_src := $(wildcard $(LOCAL_PATH)/amrnb/*.cpp)common_src := $(common_src:$(LOCAL_PATH)/amrnb/%=%)dec_src = $(wildcard $(LOCAL_PATH)/amrnb/dec/*.cpp)dec_src := $(dec_src:$(LOCAL_PATH)/amrnb/dec/%=%)enc_src = $(wildcard $(LOCAL_PATH)/amrnb/enc/*.cpp)enc_src := $(enc_src:$(LOCAL_PATH)/amrnb/enc/%=%)LOCAL_SRC_FILES :=    $(amrtool_src:%=amrtool/%)    $(common_src:%=amrnb/%)    $(dec_src:%=amrnb/dec/%)    $(enc_src:%=amrnb/enc/%)LOCAL_C_INCLUDES := $(LOCAL_PATH)/amrnb $(LOCAL_PATH)/amrnb/dec $(LOCAL_PATH)/amrnb/enc LOCAL_MODULE := amrLOCAL_CFLAGS := -DANDROID_NDK             -DDISABLE_IMPORTGL -Wno-sequence-point -Wno-extrainclude $(BUILD_SHARED_LIBRARY)


安卓語音通話

聯繫我們

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