Android IOS WebRTC 音視頻開發總結(二九)

來源:互聯網
上載者:User

標籤:

Android上的音質一直被大家所困擾和詬病,這裡面有很多原因,

下面是最近一位前UC同行發郵件跟我交流的一些記錄,供參考,支援原創,文章來自部落格園RTC.Blacker,轉載請說明出處.

以下文字來自郵件,為便於閱讀和理解,略有整理:

  "Blacker,您好,本人一直從事音視頻演算法的處理與研究,包括H264視頻,語音抑制,迴音消除,噪音處理等分支。最近已經轉向webrtc了,對webrtc也算是相對熟悉了。不過我在利用webrtc模組來開發時,遇到了一個音頻採集的問題。不知道你是否遇到了,你們是否有相關的處理方法呢。

  webrtc在pc和ios手機端,效果可以說是非常的好,但是在android手機端,效果就不怎麼樣了,語音斷斷續續的,效果很差,造成這個的其中一個因素就是AECM和AGC,噪音消除等這些模組造成的,我也仔細研究過這些演算法的底層羅輯,發現下面的演算法很多地方的初始值就是取一個經驗值,這些值的大小影響最終效果,難怪蘋果和pc裝置的效果那麼好,因為這些經驗值很可能就是針對pc和蘋果手機的。由於android手機裝置種類繁多,所以不同的裝置喇叭和麥克風不同導致效果差異太大。

  當然這些我還可以修改底層的語音演算法來最佳化,但是android端,有一個問題我始終沒有頭緒,就是音頻部分的採集問題。基本上所有android手機,採集出來的音頻資料就是不完整的,偶爾斷斷續續,加上後續音訊處理,經過處理後的效果就更差了。底層的音頻採集,用了opensles來實現,當然他還提供了回調上層java來實現採集的模組,用一個開關WEBRTC_ANDROID_OPENSLES就可以開啟,這些底層採集出來的語音都是有問題的。

  用webrtc內建的webrtcdemo就可以測試出來,特別是關掉視頻後,只開音訊話,問題更明顯.採集部分的代碼我也看過,裡面有一個緩衝大小設定,這個調大後也是作用不大的。當然我也寫單獨的demo來測試,如果我不調用StartReceive和StartPlayout,而只是調用StartSend,那個採集出來的音頻就是非常完整的,效果也非常好的,前兩者只是開啟了接收監聽和播放線程,它和startsend開啟的採集線程根本就是毫不相關的,為什麼就相互影響了呢。

  所以我有時候懷疑webrtc的架構是不是有問題呢?

  這個問題一直都沒有頭緒,你在webrtc接觸比我久,經驗比我豐富很多,接觸的牛人也多得多,我想諮詢一下你們是怎麼處理底層的聲音採集問題呢,只要把這個問題解決了,android手機端的音頻效果一定會提高50%以上,那可是質的飛躍啊。盼望你能回複,一起探討一下這個問題怎麼解決,謝謝了。 "

 

  ------------------------------------------------以下是我的回複:

  "您好,您的問題描述得很詳細,分析也很準確,說明您在這方面確實頗有研究.

   回到android音頻效果較差的的問題,先拋開手機硬體設計上的缺陷不談,主要還是跟android裝置種類繁多有關,所以webrtc裡面對某些參數取的都是經驗值,這樣就造成不同手機效果大不一樣, 所以適配這塊是一個很大的工作, 所以最好的做法就是針對每種裝置進行具體的適配,計算出具體的數值, 這樣會比較準確, 不過這個投入是很大的.   你目前只用webrtcdemo測試嗎? 你反饋的這個我沒有弄過,因為一般用WebRTCDemo的都會重寫傳輸模組, 另外附件發了個apk給你測試, 你可以用他和webrtcdemo比較下, 他們兩者主要差別就是傳輸模組不一樣. 另外這個問題我也問下我朋友吧.   測試APK詳見附件, 後面略......"    ------------------------------------------------後面是陸陸續續的郵件交流,總結如下:   "對方後面用doubango裡面的採集模組替換掉了webrtc裡面的採集模組,測試發現採集和播放都很流暢, 用我提供的apk進行測試也很流暢,我們只能推測確實跟傳輸機制有關,但傳輸為什麼會影響到音質的流暢性我們沒搞懂,而且webrtc的採集和播放用到了很多的多線程,鎖,看起來是很複雜,也很難維護.         當然也聊聊一些創業和工作相關的事情,因為跟這個主題關係不大,所以就不列出來了."  

Android IOS WebRTC 音視頻開發總結(二九)

聯繫我們

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