關於libmp3lame庫的使用小記

最近由於工作項目需要,需要支持獨立音頻錄製,格式爲mp3或wav,首先想到的的方案當然是使用ffmpeg庫啦,然後,本人查看了一下ffmpeg相關幫助文檔,發現ffmpeg中只有MP3解碼功能,但並不支持mp3編碼,這個和h264編碼類似,其實ffmpeg中攜帶了大部分解碼功能,但是編碼功能比較有限,可能跟大部分編碼標準有關吧!因爲很多的壓縮標準中,往往只規定怎麼解碼,而編碼具體內容怎麼自由發揮,只要可以滿足解碼規則即可。

上面都是題外話,現在開始進入正題,話說本人將ffmpeg和mp3lime交叉編譯後,通過ffmpeg接口對PCM數據進行了編碼,發現還是挺順利,因爲之前一直有做mp4封裝,接口調用類似,這裏要感嘆一下,開源長存!!!感謝那些無私ffmpeg做維護貢獻的人,他們是最可愛的人,ffmpeg接口做的非常好,通用新很強,不過本人使用的還很有限,有機會得繼續研究一下。接着上面說的,很快將mp3文件生成了,開心了一整,“不小心”輸入top指令,發現音頻錄製進程的CPU佔用率不是一般的高,達到45%,我了個去,雖然板子的音頻參數是:48KHz,16bit,單通道,但也不至於吧!AAC編碼同樣的PCM數據,一點都不費CPU,看來的想個辦法優化一下

優化思路

  • 查看mp3lame API文檔,調整mp3的配置參數=======無效
  • 調整ffmpeg參數,通常ffmpeg幫助文檔,同樣是CPU使用率偏高======無效
  • 較低PCM數據的採樣率,神奇了,發現CPU使用率一下子降到10%一下=====有效
  • 其他優化策略暫時未想到,有想法的朋友,可以分享一下!

看來目前的策略是先將PCM數據重採樣了,果斷調用ffmpeg重採樣接口,將PCM數據重48KHz編程11.025KHz!

此次問題先告一段落,後面有時間再深究!下回聊一下海思SDK中uboot與那個excel表的關係!

發佈了16 篇原創文章 · 獲贊 40 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章