錄音程序移植到Linux心得

我曾經寫過一篇文章“如何實現一個voip錄音系統”,後來還描述了持續改進的思路,但該程序只支持64位windows環境,現在很多主流的軟交換--如常見的Asterisk、vos等--都運行在linux下,移植到Linux很有必要,很多情況下可以不用交換機鏡像就進行錄音。

程序是使用C/C++開發的,語言層面的移植是相對容易的,畢竟C/C++是通用編程語言,而且C++11以後的多線程庫等在多個平臺都是支持的。移植錄音程序主要有兩個外部庫需要注意,一是libpcap,二是intel的IPP庫。

libpcap相對簡單,它和WinPcap在應用層接口方面是兼容的,應用層源代碼基本不需要調整,將相關的庫源代碼下載編譯後,在自己的應用層makefile文件上加上頭文件路徑-I ~/libpcap-1.9.1,再加上鍊接參數-lpcap即可。

Intel的IPP庫是公認的高性能庫,解碼g729等媒體數據佔用cpu極小。但ipp庫安裝編譯鏈接最爲頭疼,ipp歷史版本甚多,靜態編譯更加困難,詳細請參考我的文章:“使用ipp靜態庫,ipp-samples在linux下的make過程”

當然,更偷懶的做法是不解碼,將原始媒體數據用雙聲道的方式寫入wav文件,然後再做一個專門的客戶端在查詢的時候來進行解碼合成,好處就不需要任何codec,因此也省去了編譯使用ipp的麻煩,這個偷懶的方法還有一個額外的好處是cpu佔用更低,因爲完全沒有編解碼的開銷。 但缺點也很明顯,生成的雙聲道wav文件在瀏覽器下不能立即播放,需要開發轉換插件,比較麻煩,第三方應用要進行集成的話會更困難一些。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章