簡體   English   中英

使用OpenSL的所有Android設備以8KHz采樣率進行語音通信

[英]Voice communication at 8KHz sampling rate for all android device using OpenSL

我需要創建一個VOIP應用程序,我正在使用OpenSL ES。 我需要以8KHz的采樣率捕獲並播放所有Android設備的pcm音頻數據。 但是,當我以8KHz的采樣率捕獲音頻並同時播放(語音通信)時,它會產生噪音,並且對於某些設備(如Samsung Galaxy S3,S4等)的音頻會失真。我知道,有一個特定的首選采樣率對於每個設備,我想知道是否有任何解決方法或任何方式使用8KHz采樣率只是沒有任何失真?

我嘗試增加緩沖區大小和許多其他東西,但未能找到最佳和通用的解決方案。 我需要為我的編碼器和解碼器以8KHz采樣的音頻數據。 我把音頻數據重新采樣,然后傳遞給我的編碼器或解碼器,這是我的第二個想法,但它不是我想要的解決方案。

我發現CSipSimple使用了OpenSL,我也經歷了一些代碼。 但是,我找不到解決辦法,也許我無法理解在哪里集中注意力。 我被困在這里!

這是我解決問題的方法:

我正在使用OpenSL ES開發Android的音頻流, 教程對我幫助很大。 我按照這里的說明進行操作。 然后我發現使用這種方法的音頻流對某些設備(主要是三星設備)效果不佳。 我嘗試了很多東西,比如增加緩沖區大小,禁用環境混響等等。我發現這個答案對提高流媒體性能非常有用。

最后,我發現音頻失真是因為我必須用來同步緩沖開關的時鍾。 建議使用無鎖結構以獲得更好的音頻性能。 然后我選擇了Victor Lazzarini的另一種方法,即無鎖音頻IO。 本文的Android上使用OpenSL ES的無鎖音頻IO有助於實現無鎖結構以及更好的音頻性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM