1. 程式人生 > >linux/ALSA SRC重取樣造成的問題及解決

linux/ALSA SRC重取樣造成的問題及解決

背景:

在給imx6移植音效卡驅動的時候出現一個怪異的現象:

codec做I2S主機,imx6做I2S從機,codec設定的取樣率固定為8Khz,但是使用aplay命令播放8K取樣率的PCM檔案的時候出現播的很慢很慢,如果我把codec取樣率設定到44.1K的時候,或者我使用aplay -r44100命令即騙aplay我播放的音訊檔案是44.1K的時候,播放就能正常!

出現此現象我一度以為是imx6的分頻沒設好,時鐘不準,NND。

最後發現是alsa-lib搞的鬼。

解決:

/usr/share/alsa目錄下有alsa-lib的配置檔案,alsa.conf這個檔案是配置的總入口,發現裡面又匯入了兩個配置檔案

在我的系統裡沒有發現.asoundrc這個檔案。

而上面描述現象出現的根源就是/etc/asound.conf這個檔案搞的鬼。

這個檔案最後面有如下配置:

看到沒有,預設匯入了asymed這個外掛,而asymed這個外掛指定了播放和採集的取樣率為44.1K,也就是說無論你播放的是什麼取樣率的檔案,都會給你重取樣到44.1K。

oh no~~

所以,我把上面兩個44100改為8000,一切正常。歲月靜好,現世安穩!