Linphone编译【转载】
Linphone依賴太多的庫(kù),以致于稍有疏失,就會(huì)在編譯,運(yùn)行出錯(cuò),都是由于依賴庫(kù)安裝的問題。
1 基礎(chǔ)知識(shí)
1.1 動(dòng)態(tài)庫(kù)的連接
很多人安裝完庫(kù)后,configure依然報(bào)告這個(gè)庫(kù)沒有。這是對(duì)linux動(dòng)態(tài)庫(kù)知識(shí)匱乏造成,也就是對(duì)pkg-config工具使用的問題。
例如:當(dāng)我們執(zhí)行./configure操作時(shí),動(dòng)態(tài)庫(kù)的檢查是通過監(jiān)視每個(gè)安裝庫(kù)產(chǎn)生的.pc文件。
其步驟為:在/etc/ld.so.conf.d /usr/lib/pkconfig/ /usr/local/lib/pkconfig/ ...搜索.pc文件,獲取版本信息。搜索的目錄是通過$PKG_CONFIG_PATH來確定的。有的人并沒有把/usr/local/lib 作為默認(rèn)動(dòng)態(tài)庫(kù)路徑,造成編譯時(shí)出錯(cuò),簡(jiǎn)單的辦法就是將所有依賴庫(kù),都安裝在 /usr/lib 下,即 ./configure --prefix=/usr。
另一個(gè)重要點(diǎn)是,在運(yùn)行期,還要確認(rèn)動(dòng)態(tài)庫(kù)的搜索路徑。我們可以用pkg-config添加,刪除系統(tǒng)中動(dòng)態(tài)庫(kù)的搜索路徑, 在運(yùn)行程序前。 通過 ldd 查看應(yīng)用程序的依賴庫(kù),ldd會(huì)告訴你動(dòng)態(tài)庫(kù)的位置,哪些沒有安裝。
ps:把linphone 裝載 /usr下會(huì)解決很多問題,原因自己體會(huì)吧。
2 關(guān)于linphone需要庫(kù)
2.1 操作界面
linphone 有兩種操作方式,終端和圖形,分別對(duì)應(yīng)于linphonec和linphone。
linphonec 依賴readline庫(kù)實(shí)現(xiàn),它提供了一套Console的SDK,可以輕松實(shí)現(xiàn)command,history的功能。在源碼中對(duì)應(yīng)console目錄
linphone 依賴gtk+實(shí)現(xiàn) ,所以要確定gtk+庫(kù)的安裝。
2.2 Codec
linphone 自己做了一套mediastream庫(kù),在源編譯時(shí),安裝時(shí)會(huì)自動(dòng)裝進(jìn)系統(tǒng)。其中g(shù)sm ,G.711, PCM a/u,都是在源碼中提供的,視頻theroa庫(kù),需要獨(dú)立安裝,還有h263 MP4V ...都是用ffmpeg庫(kù)的,所以ffmpeg安裝是必需的。
2.3 ffmpeg
ffmpeg是一套錄制,轉(zhuǎn)換各種音視頻各式的工具集,也提供SDK的codec接口。主要包括ffmpeg ffplay ffserver libavcodec libavformat
其中很多編解碼庫(kù)依賴于第三方,比如xVid lampMP3 等等。
ffmpeg的編譯大全
ffmpeg的編譯大全
最近互聯(lián)網(wǎng)視頻共享的網(wǎng)站很火,公司也想搞類似的網(wǎng)站,初步是用fms+ffmpeg形式
fms負(fù)責(zé)在線錄制,播放,ffmpeg則在后臺(tái)處理上傳的資源轉(zhuǎn)換成一定的格式。
為了讓ffmpeg支持的格式盡量多,所以特把我的編譯筆記分享一下
環(huán)境:redhat as4
1。首先獲取ffmpeg
很多人找不到怎么下載,其實(shí)之前ffmpeg可以通過cvs下載,不過最近他已經(jīng)換成了更加強(qiáng)大的svn
如何使用SVN我這里不再介紹,網(wǎng)上還有大量的安裝和使用的文章可以借鑒,這里簡(jiǎn)單羅列幾個(gè)SVN輔助的軟件:
SubVersion,從 http://subversion.tigris.org/ 下載,支持linux,我們這里就裝這個(gè)
TortoiseSVN,從 http://tortoisesvn.tigris.org/ 下載,是很不錯(cuò)的SVN客戶端程序,為windows外殼程序集成到windows資源管理器和文件管理系統(tǒng)的Subversion客戶端,用起來很方便,commit動(dòng)作變得就像Winrar右鍵壓縮一樣方便。
ok,那我們先裝subversion,記住最好之前裝過apr和apr-util,在apache.org網(wǎng)站能下到
wget http://subversion.tigris.org/downloads/subversion-1.3.2.tar.gz
tar zvxf subversion-1.3.2.tar.gz
cd subversion-1.3.2
./configure --with-apr=/usr/local/apr-httpd --with-apr-util=/usr/local/apr-util-httpd/
make
make install
到此,我們就可以通過svn命令獲取最新的ffmpeg了
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
你會(huì)發(fā)現(xiàn)在你所在的目錄,自動(dòng)出現(xiàn)一個(gè)ffmpeg的目錄,就是你下載的源代碼。
我們還不能這么快編譯ffmpeg,應(yīng)該如果要讓ffmpeg支持更多格式的轉(zhuǎn)換,還需做一些前期工作
2.支持mp3,linux當(dāng)然是lame,下載解壓
cd lame-3.96.1
./configure --enable-shared --prefix=/usr
這里推薦盡量裝在/usr下,默認(rèn)是裝在/usr/local下。這樣ffmpeg編譯都能順利的找到庫(kù)文件
3.支持Ogg Vorbis:
as4自帶相應(yīng)的rpm包,你可以安裝一下如下rpm包
libvorbis, libvorbis-devel,libogg, libogg-devel
4.支持xvid x264,現(xiàn)在最流行的兩種高質(zhì)量的壓縮格式
xvid的編譯安裝
wget http://downloads.xvid.org/downloads/xvidcore-1.1.0.tar.gz
tar zvxf xvidcore-1.1.0.tar.gz
./configure --prefix=/usr
make
make install
x264的獲取同樣是采用svn方式,看來svn取代cvs不遠(yuǎn)了
svn co svn://svn.videolan.org/x264/trunk x264
cd x264
./configure --prefix=/usr --enable-shared
make
make install
5.AC3和dts編碼的支持
as4系統(tǒng)似乎已經(jīng)支持ac3編碼,編譯的時(shí)候只要加--enable-a52 --enable-gpl參數(shù)就行
libdts編譯參數(shù)
./configure --prefix=/usr
make
make install
6.mpg4 aac格式支持,由于服務(wù)器還針對(duì)手機(jī)用戶服務(wù),所以,類似aac,mpg4鈴聲格式的支持,我們也得做。這里我們安裝faad2和faac就行
下載請(qǐng)到http://www.audiocoding.com/modules/mydownloads/
FAAD2的編譯
cd faad2
autoreconf -vif
./configure --prefix=/usr --with-mp4v2 --enable-shared
make
make install
faac的編譯
cd faac
chmod +x bootstrap
./bootstrap
./configure --prefix=/usr --with-mp4v2 --enable-shared
make
make install
7.支持3gp格式,這也是現(xiàn)在好多手機(jī)支持的格式,因?yàn)槭謾C(jī)用戶是我們的主要用戶,所以也得支持編譯
編譯的時(shí)候加上--enable-amr_nb --enable-amr_wb參數(shù)就行,根據(jù)編譯系統(tǒng)的提示,所以我們得下載一
些編譯3gp所需得文件。
wget http://www.3gpp.org/ftp/Specs/archive/26_series/26.204/26204-510.zip
解壓以后把里面的文件都拷貝到libavcodec/amrwb_float
wget http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-510.zip
解壓以后把里面的文件都拷貝到libavcodec/amr_float
好了,基本ffmpeg支持的格式,我們基本都做好前期準(zhǔn)備了,下面是ffmpeg的編譯
./configure --prefix=/usr --enable-gpl --enable-shared --enable-mp3lame --enable-amr_nb --enable-amr_wb --enable-amr_if2 --enable-libogg --enable-vorbis --enable-xvid --enable-a52 --enable-a52bin --enable-faadbin --enable-dts --enable-pp --enable-faad --enable-faac --enable-x264 --enable-pthreads --disable-ffserver --disable-ffplay
make
make install
補(bǔ)充1:
關(guān)于3gp的編譯,如果大家要編譯--enable-amr_nb-fixed,那就不能跟--enable-amr_nb同時(shí)編譯,我不大清楚這兩者到底有什么區(qū)別,似乎fixed是修正版,管他呢,編譯的方法:
wget http://www.3gpp.org/ftp/Specs/archive/26_series/26.073/26073-510.zip
解壓以后把里面的文件都拷貝到libavcodec/amr目錄下
修改libavcodec/amr/makefile 找到CFLAGS = -Wall -pedantic-errors -I. $(CFLAGS_$(MODE)) -D$(VAD) 換成CFLAGS = -Wall -I. $(CFLAGS_$(MODE)) -D$(VAD) -DMMS_IO
整體編譯參數(shù)就是
./configure --prefix=/usr --enable-gpl --enable-shared --enable-mp3lame --enable-amr_nb-fixed --enable-amr_wb --enable-amr_if2 --enable-libogg --enable-vorbis --enable-xvid --enable-a52 --enable-a52bin --enable-dts --enable-pp --enable-faad --enable-faadbin --enable-faac --enable-x264 --enable-pthreads --disable-ffserver --disable-ffplay
make
make install
補(bǔ)充2:
有朋友說在當(dāng)在cpu是x86的情況下,不能編譯過去,我這里沒發(fā)生過這情況,如果你真編譯不過去,可以試著加上cpu=cpu
ok,一個(gè)強(qiáng)大的ffmpeg編譯好了,不過目前管方的ffmpeg還不支持wma9和rmvb,不過網(wǎng)上有很多解決方法,大家去自己找找。
文章出處:http://www.diybl.com/course/3_program/gcs/2008617/126097.html
總結(jié)
以上是生活随笔為你收集整理的Linphone编译【转载】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Aspose.Cells组件生成Ex
- 下一篇: dataTable的用法