speex 编译(转)
?http://blog.chinaunix.net/u/26691/showart_331169.html
speex是一個開源的基于CELP算法的音頻編解碼器。這個算法早在1985年就已經公開了,應該不會遇到什么licence的問題了。相信做音頻和voip的朋友對它一定都非常熟悉。
speex的主要特點如下:
(1)開源的軟件,而且完全免費———如果你愿意贊助的話,可以通過www.speex.org與他們取得聯系
(2)使用嵌入式比特流,使編解碼器可以適應高帶寬和低帶寬的不用應用場合
(3)支持各種不同的比特率情況下的編解碼(從2.15kbps到44kbps)
(4)支持動態比特率切換(AMR)和變比特率操作(VBR)
(5)在VBR中集成了語音活躍檢測(VAD),支持不連續傳輸(DTX)
(6)支持混音(Variable complexity)
(7)嵌入寬帶結構(支持可縮放的采樣率)
(8)支持32KHz極端的寬頻模式(Utra-wideband mode)
(9)支持增強雙聲道編碼
(10)采用Fix-point實現方式,加快運行速度
不光如此,它還可以支持AEC,基于聲學的回音消除功能。
那么這個東西如何在win32環境下面編譯呢?我以我能拿到的最新版本speex-1.2beta2在vs2003環境下面的編譯為例來說明一下:
(1)首先編譯libspeex
這個庫分為靜態(lib)和動態(dll)兩個版本,可以依照需要分別編譯使用。
從他們的maillist可以看出,他們對于linux環境下面的speex還是比較放心的,但是沒有更新win32下面的這些工程文件。這樣勢必導致我們編譯的時候會遇到一些問題。
?
首先的問題就是#include <ogg/ogg.h>這個文件打不開,可以到 http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz這里下載libogg,解壓然后編譯它的win32版本,這個還是沒問題的。編譯完畢后,會生成一個libogg_static_d.lib,我們把libogg的include路徑和lib路徑以及鏈接中需要添加的lib加到當前的libspeex工程中,這樣第一步就差不多了。
?
編譯還會提示沒有找到medfilter.c這個文件,通過查看它的changelog就知道已經沒用了,所以直接從解決方案管理器里面刪除掉這個.c文件即可。
?
然后可以順利編譯了,但是要注意這些還沒完根據change log,我們可以看到它還少了一個window.c這個文件,你可以從libspeex目錄中找到,把它加入到當前的項目中即可(這個問題讓我都要瘋狂了,明明編譯出來了lib但是在程序中總是提示什么unsolved external _lpc_window之類的云云)。原來問題在這里。
(2)然后編譯幾個自帶的enc和dec程序
這里需要說明的是,在enc和dec工程中需要添加libogg_static_d.lib,libspeex.lib以及各自的include和lib的路徑。然后,需要把src目錄下面的skeleton.c和skeleton.h都添加到當前的enc或者dec項目中才有可能真正生成可以使用的exe程序。
這個東西總算可以用了,心情舒暢中!!但愿它能夠幫助我解決voip中的回音問題。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/yfqvip/archive/2009/11/06/4776186.aspx
總結
以上是生活随笔為你收集整理的speex 编译(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springboot拦截了静态资源css
- 下一篇: sptk安装,编译流程