什么是Opus?
Opus官網(wǎng)介紹 Opus
opus是完全開放的,免版稅的,高度通用的音頻編解碼器接奈。作品是無與倫比的交互式語音和音樂在互聯(lián)網(wǎng)上傳播,但也用于存儲和流媒體的應(yīng)用程序踢涌。
標準化是因特網(wǎng)工程任務(wù)組(IETF)為RFC 6716,從Skype編解碼器和Xiph整合技術(shù)。Org的編解碼器序宦。
opus可以處理廣泛的音頻應(yīng)用程序,包括IP電話斯嚎、視頻會議、游戲內(nèi)聊天,甚至遠程現(xiàn)場音樂表演挨厚。它可以規(guī)模從低比特率窄帶語音非常高質(zhì)量的立體聲音樂堡僻。支持功能:
比特率從6 kb / s到510 kb / s
采樣率從8 kHz(窄帶)48千赫(fullband)
幀大小從2.5毫秒到60毫秒
支持兩個恒定比特率(CBR)和可變比特率(VBR)
從窄帶fullband音頻帶寬
支持語音和音樂
支持單聲道和立體聲
支持多達255個頻道的節(jié)目(多流道幀)
動態(tài)可變比特率、音頻帶寬,和幀大小
良好的魯棒性和包丟失隱藏損失(PLC)
浮點和定點實現(xiàn)
為什么要在visual studio 中配置opus疫剃?
做為一名android開發(fā)人員钉疫,要將這個opus的庫移植到android上,最好的就是官方的列子了巢价,而且這些例子都是默認有支持visual Studio的牲阁,使用過visual Studio的人都知道,
visual Studio也是一個非常牛逼壤躲,非常方便的一個軟件城菊,提供了很多方便的功能,當(dāng)然我們不是沒事干配置Visual Studio 的項目碉克,這么做的目的還是最終為了移植到android上
通過了解他提供的demo凌唬,或者嘗試的去修改demo代碼,修改完之后漏麦,再移植到android上面,下面會介紹怎么配置visual Studoiio
visual studio中配置opus
Opus 開發(fā)者介紹 Opus development
我們可以通過上面的連接將要下載的內(nèi)容客税,克隆下來,依次執(zhí)行
opus庫為主要的編解碼庫
git clone https://git.xiph.org/opus.git
Opus-tools編碼/解碼 opus到wav,或者wav到opus的實現(xiàn)
git clone https://git.xiph.org/opus-tools.git
Opusfile API提供了一個高層次的解碼和尋求在.opus文件類似libvorbisfile Vorbis提供撕贞。
git clone https://git.xiph.org/opusfile.git
libopusenc提供高級API創(chuàng)建.opus文件和流更耻。
git clone https://git.xiph.org/libopusenc.git
-
opus庫生成
在克隆下來的opus庫,目錄下面會有一個win32目錄捏膨,里面會有一個vs2015目錄秧均,在這個目錄里面會有一個opus.ls文件,在安裝好了visual Studio 之后,是可以直接打開這個文件的
visual Sutdio打開之后目胡,點擊生成疙描,重新生成解決方案,會產(chǎn)生下面的結(jié)果
上圖所示讶隐,生成了5個結(jié)果,對應(yīng)的項目為左邊的剛好5個,那這樣opus庫配置完成
opus生成的結(jié)果久又,生成的目錄以及文件為
-
libopusenc庫生成
在克隆下來的libopusenc庫巫延,目錄下面會有一個win32目錄,里面會有一個vs2015目錄地消,在這個目錄里面會有一個opusenc.ls文件炉峰,在安裝好了visual Studio 之后,是可以直接打開這個文件的
visual Sutdio打開之后脉执,點擊生成疼阔,重新生成解決方案,會產(chǎn)生下面的結(jié)果
上圖所示半夷,生成了1個結(jié)果婆廊,對應(yīng)的項目為左邊的剛好1個,那這樣libopusenc庫配置完成
libopusenc生成的結(jié)果,生成的目錄以及文件為
在libopusenc 項目右鍵選項中的c/c++一覽巫橄,常規(guī)選項淘邻,有一個選項為包含目錄中有一個......\opus\include ,這個剛好對應(yīng)的是我們的opus庫中湘换,所以要先編譯opus庫
-
Opusfile庫生成
在克隆下來的opusfile庫宾舅,目錄下面會有一個win32目錄,里面會有一個vs2015目錄彩倚,在這個目錄里面會有一個opusfile.ls文件筹我,在安裝好了visual Studio 之后,是可以直接打開這個文件的
visual Sutdio打開之后帆离,點擊生成蔬蕊,重新生成解決方案,會出現(xiàn)錯誤哥谷,大致就是說缺少相應(yīng)的文件比如ogg/ogg.h文件等,我們通過點擊項目opusfile右鍵查看屬性
上圖所示袁串,我們?nèi)鄙賝gg ,以及opensssl文件,所以我們必須要先編譯對應(yīng)的文件
通過上面的圖片可以知道ogg,openssl的目錄必須要跟opusfile同一級的目錄呼巷,而且文件夾名必須為ogg,openssl囱修,要不然對應(yīng)不上
-
ogg的生成
首先要將ogg的代碼克隆下來 git clone -q https://github.com/xiph/ogg.git 然后進入ogg的目錄,里面也有一個win32目錄王悍,在win32里面有一個VS2015目錄破镰,這個目錄里面存在一個名為libogg_static.sln ,這個就是我們visual Studio可以打開的文件,
雙擊打開這個工程,然后通過生成鲜漩, 重新生成解決方案源譬,會產(chǎn)生下面的結(jié)果
ogg生成的結(jié)果,生成的目錄以及文件為
-
openssl庫生成
具體的編譯過程可以參考這篇文章 openssl編譯 https://www.cnblogs.com/lpxblog/p/5382653.html
我們通過點擊opusfile_example 項目的右鍵 在鏈接器一覽 輸入中可以看出孕似,這個項目需要的外部庫
我們可以直接將openssl 編譯的文件中找到對應(yīng)的lib踩娘,然后拷貝到當(dāng)前的目錄,或者修改lib庫文件的依賴,我們采用前者 拷貝之后的目錄為
最后我們點擊生成喉祭,重新生成解決方案养渴,會產(chǎn)生下面的結(jié)果
opusfile 生成結(jié)果的目錄
-
Opustool庫生成
在克隆的項目中,在VS2015目錄中存在一個opus-tools.sln文件泛烙,這個就是我們visual Studio可以打開的文件理卑,雙擊打開這個工程,然后通過生成, 重新生成解決方案蔽氨,
會產(chǎn)生錯誤藐唠,缺少flac文件,缺少libFLAC_static.lib
所以我們必須要先編譯對應(yīng)的文件
我們通知執(zhí)行
git clone -q https://github.com/xiph/flac.git,
將flac的代碼克隆下來鹉究,要注意的是宇立,通過上圖可知,flac的文件目錄要跟opus目錄處于同一級別自赔,而且文件名
必須要為flac泄伪,要不然就要修改對應(yīng)的依賴配置
目錄文件結(jié)構(gòu)為
-
編譯flac
在克隆的代碼目錄中有一個FLAC.sln文件,雙擊使用Visual Studio打開,如果直接使用生成匿级,重新生成解決方案蟋滴,會出現(xiàn)無法打開libFLAC_static.lib之類的,這是因為要提前編譯
對應(yīng)的lib庫文件痘绎,然后再去編譯其他的津函,下面是要先去編譯的項目,通過點擊對應(yīng)的項目孤页,右鍵然后執(zhí)行生成尔苦,就可以生成對應(yīng)的庫文件
在生成libFLAC_static.lib的文件的時候,會出現(xiàn)找不到對應(yīng)的ogg/ogg.h之類的文件行施,在flac對應(yīng)的右鍵屬性中可以找到對應(yīng)的依賴
所以我們要將編譯好的對應(yīng)的ogg拷貝到對應(yīng)的文件里面允坚,首先拷貝ogg的頭文件,在ogg的工程目錄中,有一個inlcude目錄里面有一個ogg的目錄蛾号,將這個拷貝到flac目錄中的include目錄
下面是拷貝之后的結(jié)果
然后拷貝 ogg生成的文件 libogg_static.lib 到flac 中的 flac\objs\debug\lib 目錄中
然后重新生成,這些庫文件生成之后稠项,然后點擊生成,生成解決方案鲜结,就可以將全部的文件生成展运,注意這里不能點擊重新生成解決方案活逆,要不然又出現(xiàn)上面的問題,生成的目錄文件為
點擊項目右鍵屬性查看依賴
可以看出來拗胜,opus-tools需要依賴很多的lib蔗候,比如opus.lib,opus_file.lib等,所以我們要將opus-tools的編譯放在最后面埂软,從這里還知道opus-tools也需要openssl
我們可以參考上面生成opus-file的時候锈遥,怎么引進openssl的方式拷貝內(nèi)容
最終生成的結(jié)果為:
以上就是Opus 在window工程的配置,之后我們就可以在Window下面方便的查看代碼,然后修改代碼勘畔,最后就修改之后的代碼所灸,轉(zhuǎn)移到Android來編譯