我們重點看看直播過程中出現的雜音、噪音和回聲等問題。
相比於影片而言,音訊要敏感得多,影片畫面有噪點、馬賽克都還是可以勉強被接受,而聲音一旦有任何瑕疵,人耳都會特別容易感覺到,而且難以忍受。
問題現象
常見的音訊問題現象描述如下:
- 電流音,爆音,滋滋聲或者嘟嘟聲
- 聲音斷斷續續,聽不清楚
- 回聲,能聽到自己說話的聲音
問題排查
1.引數配置問題
上面也有提到,音訊是一個特別敏感的東西,涉及到許多引數配置,一旦配置不太匹配,就會導致聲音聽起來非常詭異(比如:取樣率是 32000Hz 的音訊,給播放器配置為 8000Hz 或者 44100Hz,就明顯會出現音訊慢放或者快放的效果)。
常見的音訊引數和基本原理,可以參考文章:《Android音訊開發(1):基礎知識》
我們只需要注意的是,無論是採集和播放,都要給系統的 API 以及第三方的庫配置正確的引數,如:取樣率、位寬、聲道數等等。
2.程式碼層面的原因
常見的程式碼層面的問題有如下幾種:
- 音訊 buffer 大小不匹配,一段 1024 bytes 的音訊,放到了 2048 bytes 的陣列,導致尾部有隨機數
- 音訊 resample 重取樣的演算法問題,導致取樣出來的資料出了問題
- Android 的 ByteBuffer 取出陣列,是不能直接用 .array() 方法的,而需要用 .get() 方法
- iOS 系統,其他 app 透過系統 API 更改了 AudioSession 取樣率的配置
我們重點看看直播過程中出現的雜音、噪音和回聲等問題。
相比於影片而言,音訊要敏感得多,影片畫面有噪點、馬賽克都還是可以勉強被接受,而聲音一旦有任何瑕疵,人耳都會特別容易感覺到,而且難以忍受。
問題現象
常見的音訊問題現象描述如下:
- 電流音,爆音,滋滋聲或者嘟嘟聲
- 聲音斷斷續續,聽不清楚
- 回聲,能聽到自己說話的聲音
問題排查
1.引數配置問題
上面也有提到,音訊是一個特別敏感的東西,涉及到許多引數配置,一旦配置不太匹配,就會導致聲音聽起來非常詭異(比如:取樣率是 32000Hz 的音訊,給播放器配置為 8000Hz 或者 44100Hz,就明顯會出現音訊慢放或者快放的效果)。
常見的音訊引數和基本原理,可以參考文章:《Android音訊開發(1):基礎知識》
我們只需要注意的是,無論是採集和播放,都要給系統的 API 以及第三方的庫配置正確的引數,如:取樣率、位寬、聲道數等等。
2.程式碼層面的原因
常見的程式碼層面的問題有如下幾種:
- 音訊 buffer 大小不匹配,一段 1024 bytes 的音訊,放到了 2048 bytes 的陣列,導致尾部有隨機數
- 音訊 resample 重取樣的演算法問題,導致取樣出來的資料出了問題
- Android 的 ByteBuffer 取出陣列,是不能直接用 .array() 方法的,而需要用 .get() 方法
- iOS 系統,其他 app 透過系統 API 更改了 AudioSession 取樣率的配置