什么是Opus?
Opus官網(wǎng)介紹 Opus
opus是完全開(kāi)放的,免版稅的,高度通用的音頻編解碼器。作品是無(wú)與倫比的交互式語(yǔ)音和音樂(lè)在互聯(lián)網(wǎng)上傳播,但也用于存儲(chǔ)和流媒體的應(yīng)用程序。
標(biāo)準(zhǔn)化是因特網(wǎng)工程任務(wù)組(IETF)為RFC 6716,從Skype編解碼器和Xiph整合技術(shù)。Org的編解碼器。
opus可以處理廣泛的音頻應(yīng)用程序,包括IP電話、視頻會(huì)議、游戲內(nèi)聊天,甚至遠(yuǎn)程現(xiàn)場(chǎng)音樂(lè)表演。它可以規(guī)模從低比特率窄帶語(yǔ)音非常高質(zhì)量的立體聲音樂(lè)。支持功能:
比特率從6 kb / s到510 kb / s
采樣率從8 kHz(窄帶)48千赫(fullband)
幀大小從2.5毫秒到60毫秒
支持兩個(gè)恒定比特率(CBR)和可變比特率(VBR)
從窄帶fullband音頻帶寬
支持語(yǔ)音和音樂(lè)
支持單聲道和立體聲
支持多達(dá)255個(gè)頻道的節(jié)目(多流道幀)
動(dòng)態(tài)可變比特率、音頻帶寬,和幀大小
良好的魯棒性和包丟失隱藏?fù)p失(PLC)
浮點(diǎn)和定點(diǎn)實(shí)現(xiàn)
為什么要在visual studio 中配置opus?
做為一名android開(kāi)發(fā)人員,要將這個(gè)opus的庫(kù)移植到android上,最好的就是官方的列子了,而且這些例子都是默認(rèn)有支持visual Studio的,使用過(guò)visual Studio的人都知道,
visual Studio也是一個(gè)非常牛逼,非常方便的一個(gè)軟件,提供了很多方便的功能,當(dāng)然我們不是沒(méi)事干配置Visual Studio 的項(xiàng)目,這么做的目的還是最終為了移植到android上
通過(guò)了解他提供的demo,或者嘗試的去修改demo代碼,修改完之后,再移植到android上面,下面會(huì)介紹怎么配置visual Studoiio
visual studio中配置opus
Opus 開(kāi)發(fā)者介紹 Opus development
我們可以通過(guò)上面的連接將要下載的內(nèi)容,克隆下來(lái),依次執(zhí)行
opus庫(kù)為主要的編解碼庫(kù)
git clone https://git.xiph.org/opus.git
Opus-tools編碼/解碼 opus到wav,或者wav到opus的實(shí)現(xiàn)
git clone https://git.xiph.org/opus-tools.git
Opusfile API提供了一個(gè)高層次的解碼和尋求在.opus文件類(lèi)似libvorbisfile Vorbis提供。
git clone https://git.xiph.org/opusfile.git
libopusenc提供高級(jí)API創(chuàng)建.opus文件和流。
git clone https://git.xiph.org/libopusenc.git
-
opus庫(kù)生成
在克隆下來(lái)的opus庫(kù),目錄下面會(huì)有一個(gè)win32目錄,里面會(huì)有一個(gè)vs2015目錄,在這個(gè)目錄里面會(huì)有一個(gè)opus.ls文件,在安裝好了visual Studio 之后,是可以直接打開(kāi)這個(gè)文件的
visual Sutdio打開(kāi)之后,點(diǎn)擊生成,重新生成解決方案,會(huì)產(chǎn)生下面的結(jié)果
opus生成.png
上圖所示,生成了5個(gè)結(jié)果,對(duì)應(yīng)的項(xiàng)目為左邊的剛好5個(gè),那這樣opus庫(kù)配置完成
opus生成的結(jié)果,生成的目錄以及文件為
opus生成結(jié)果.png
-
libopusenc庫(kù)生成
在克隆下來(lái)的libopusenc庫(kù),目錄下面會(huì)有一個(gè)win32目錄,里面會(huì)有一個(gè)vs2015目錄,在這個(gè)目錄里面會(huì)有一個(gè)opusenc.ls文件,在安裝好了visual Studio 之后,是可以直接打開(kāi)這個(gè)文件的
visual Sutdio打開(kāi)之后,點(diǎn)擊生成,重新生成解決方案,會(huì)產(chǎn)生下面的結(jié)果
libopusenc.png
上圖所示,生成了1個(gè)結(jié)果,對(duì)應(yīng)的項(xiàng)目為左邊的剛好1個(gè),那這樣libopusenc庫(kù)配置完成
libopusenc生成的結(jié)果,生成的目錄以及文件為
libopusenc生成結(jié)果.png
在libopusenc 項(xiàng)目右鍵選項(xiàng)中的c/c++一覽,常規(guī)選項(xiàng),有一個(gè)選項(xiàng)為包含目錄中有一個(gè)......\opus\include ,這個(gè)剛好對(duì)應(yīng)的是我們的opus庫(kù)中,所以要先編譯opus庫(kù)
libopus生成需知.jpg
-
Opusfile庫(kù)生成
在克隆下來(lái)的opusfile庫(kù),目錄下面會(huì)有一個(gè)win32目錄,里面會(huì)有一個(gè)vs2015目錄,在這個(gè)目錄里面會(huì)有一個(gè)opusfile.ls文件,在安裝好了visual Studio 之后,是可以直接打開(kāi)這個(gè)文件的
visual Sutdio打開(kāi)之后,點(diǎn)擊生成,重新生成解決方案,會(huì)出現(xiàn)錯(cuò)誤,大致就是說(shuō)缺少相應(yīng)的文件比如ogg/ogg.h文件等,我們通過(guò)點(diǎn)擊項(xiàng)目opusfile右鍵查看屬性
opusfile依賴(lài).jpg
上圖所示,我們?nèi)鄙賝gg ,以及opensssl文件,所以我們必須要先編譯對(duì)應(yīng)的文件
通過(guò)上面的圖片可以知道ogg,openssl的目錄必須要跟opusfile同一級(jí)的目錄,而且文件夾名必須為ogg,openssl,要不然對(duì)應(yīng)不上
-
ogg的生成
首先要將ogg的代碼克隆下來(lái) git clone -q https://github.com/xiph/ogg.git 然后進(jìn)入ogg的目錄,里面也有一個(gè)win32目錄,在win32里面有一個(gè)VS2015目錄,這個(gè)目錄里面存在一個(gè)名為libogg_static.sln ,這個(gè)就是我們visual Studio可以打開(kāi)的文件,
雙擊打開(kāi)這個(gè)工程,然后通過(guò)生成, 重新生成解決方案,會(huì)產(chǎn)生下面的結(jié)果
ogg生成解決方案.png
ogg生成的結(jié)果,生成的目錄以及文件為
ogg生成文件目錄.png
-
openssl庫(kù)生成
具體的編譯過(guò)程可以參考這篇文章 openssl編譯 https://www.cnblogs.com/lpxblog/p/5382653.html
openssl編譯結(jié)果.png
我們通過(guò)點(diǎn)擊opusfile_example 項(xiàng)目的右鍵 在鏈接器一覽 輸入中可以看出,這個(gè)項(xiàng)目需要的外部庫(kù)
opusfile_example 依賴(lài).png
我們可以直接將openssl 編譯的文件中找到對(duì)應(yīng)的lib,然后拷貝到當(dāng)前的目錄,或者修改lib庫(kù)文件的依賴(lài),我們采用前者 拷貝之后的目錄為
openssl文件拷貝.png
最后我們點(diǎn)擊生成,重新生成解決方案,會(huì)產(chǎn)生下面的結(jié)果
opusfile生成結(jié)果.png
opusfile 生成結(jié)果的目錄
opusfile生成目錄.png
-
Opustool庫(kù)生成
在克隆的項(xiàng)目中,在VS2015目錄中存在一個(gè)opus-tools.sln文件,這個(gè)就是我們visual Studio可以打開(kāi)的文件,雙擊打開(kāi)這個(gè)工程,然后通過(guò)生成, 重新生成解決方案,
會(huì)產(chǎn)生錯(cuò)誤,缺少flac文件,缺少libFLAC_static.lib
opus-tools依賴(lài)文件.jpg
所以我們必須要先編譯對(duì)應(yīng)的文件
我們通知執(zhí)行
git clone -q https://github.com/xiph/flac.git,
將flac的代碼克隆下來(lái),要注意的是,通過(guò)上圖可知,flac的文件目錄要跟opus目錄處于同一級(jí)別,而且文件名
必須要為flac,要不然就要修改對(duì)應(yīng)的依賴(lài)配置
目錄文件結(jié)構(gòu)為
opus目錄文件.png
-
編譯flac
在克隆的代碼目錄中有一個(gè)FLAC.sln文件,雙擊使用Visual Studio打開(kāi),如果直接使用生成,重新生成解決方案,會(huì)出現(xiàn)無(wú)法打開(kāi)libFLAC_static.lib之類(lèi)的,這是因?yàn)橐崆熬幾g
對(duì)應(yīng)的lib庫(kù)文件,然后再去編譯其他的,下面是要先去編譯的項(xiàng)目,通過(guò)點(diǎn)擊對(duì)應(yīng)的項(xiàng)目,右鍵然后執(zhí)行生成,就可以生成對(duì)應(yīng)的庫(kù)文件
flac庫(kù)生成優(yōu)先級(jí).png
在生成libFLAC_static.lib的文件的時(shí)候,會(huì)出現(xiàn)找不到對(duì)應(yīng)的ogg/ogg.h之類(lèi)的文件,在flac對(duì)應(yīng)的右鍵屬性中可以找到對(duì)應(yīng)的依賴(lài)
flac 依賴(lài)ogg.jpg
所以我們要將編譯好的對(duì)應(yīng)的ogg拷貝到對(duì)應(yīng)的文件里面,首先拷貝ogg的頭文件,在ogg的工程目錄中,有一個(gè)inlcude目錄里面有一個(gè)ogg的目錄,將這個(gè)拷貝到flac目錄中的include目錄
下面是拷貝之后的結(jié)果
flac ogg頭文件的拷貝.png
然后拷貝 ogg生成的文件 libogg_static.lib 到flac 中的 flac\objs\debug\lib 目錄中
然后重新生成,這些庫(kù)文件生成之后,然后點(diǎn)擊生成,生成解決方案,就可以將全部的文件生成,注意這里不能點(diǎn)擊重新生成解決方案,要不然又出現(xiàn)上面的問(wèn)題,生成的目錄文件為
flac生成的文件內(nèi)容.png
點(diǎn)擊項(xiàng)目右鍵屬性查看依賴(lài)
opus-tools依賴(lài)文件.jpg
可以看出來(lái),opus-tools需要依賴(lài)很多的lib,比如opus.lib,opus_file.lib等,所以我們要將opus-tools的編譯放在最后面,從這里還知道opus-tools也需要openssl
我們可以參考上面生成opus-file的時(shí)候,怎么引進(jìn)openssl的方式拷貝內(nèi)容
最終生成的結(jié)果為:
opus-tools生成的結(jié)果.png
以上就是Opus 在window工程的配置,之后我們就可以在Window下面方便的查看代碼,然后修改代碼,最后就修改之后的代碼,轉(zhuǎn)移到Android來(lái)編譯




















