最近在做車聯網項目,遇到一個問題。我們需要把設備上報的音視頻數據,使用中間服務推送到rtmp服務器,推送的庫使用的是srs-librtmp開源庫,但是在推送音頻的時候出現了問題,有一部分設備上報的音頻數據採樣率爲8K,但是推送的第三方開源庫只支持5.5 kHz、11 kHz、22 kHz、44 kHz 。如果傳入其他採樣率的,在推送的時候,會根據區域之間使用這四種的一個,這導致推送出來的音頻不是播放快,就是慢,失真嚴重。遇到這個問題就想着把採樣率轉轉,這就需要算法了啊,雖然當你大學專業是通信,專門學這些,但是這幾年沒有接觸,都已經還給老師了。
剛好有個同事在使用webRtc做視頻會議(原來是我兩在做了),說他在裏面有使用,我就找到了裏面的源碼,將源碼提出來封裝爲動態庫,方便使用。
轉換效果對比(8K轉11K):
波形一樣,一樣,完全一樣啊!
認真分析:
轉換後的採樣點密集了,在時間上,轉換後的卻延時了。(這個延時完全可以忽略啊)