Opus库生成
将Opus库clone之后,找到目录中的win32文件夹,里面有一个vs2015目录,点击这里面的opus.sln,就会打开Opus的VS工程,如果你的VS版本是2017及以上,会提示你升级版本,这个时候确认就好了(如下图所示,由于我在编写该文档的时候已经生成了opus库和libopusenc库,所以这里以opusfile库为例)。
在打开工程之后,点击“生成->生成解决方案”。待生成完成以后,会发现在当前目录下有了“Debug”目录,里面有下图的5个文件夹及关键的opus.lib文件,这就代表生成成功了。
libopusenc库生成
同样,打开libopusenc\win32\VS2015,里面有一个opusenc.sln,双击打开之后,就会进入工程界面,如下图所示。
然后依旧是点击生成该解决方案,生成成功会显示下面的提示:
生成的目录如下图所示:
注意:
如下图所示,生成libopusenc库需要依赖于opus库,所以需要先编译生成opus库才可以进行本工程的编译生成。
opusfile库编译生成
同样是在该工程win32\VS2015下,双击opusfile.sln,打开工程,确认升级。点击生成,会提示出现错误,例如下图
上图提示我们缺少ogg.h文件,实际上我们在进行opus编译的时候需要依赖于ogg和openssl库,因此我们需要下载这个库并进行编译。我们看下图,确定好ogg和openssl的目录必须和opusfile同一级目录。
ogg的生成
首先把ogg代码clone下来,继续进入win32\VS2015目录中的libogg.sln,打开之后重新生成,结果如下:
openssl编译
首先需要下载三个部分:
(1)Perl:http://www.activestate.com/activeperl/downloads/。
(2)NASM:https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/win64/(官网为http://www.nasum.us)
(3)Openssl:https://www.openssl.org/source/(我下载的是openssl-1.1.1g.tar.gz)
然后确定是否安装了Visual Studio。这里默认已经安装。
在上述三部分下载完成后,开始安装。
首先安装ActivePerl。按照完成后,在cmd输入perl -v确认是否安装成功,若成功则出现下面的界面:
然后安装NASM,直接安装即可。安装完成后,将安装地址(如我的是C:\Program Files\NASM)添加到系统变量Path中。
然后开始安装OpenSSL,将下载的openssl解压并将目录名修改为openssl。以下开始分步骤介绍:
(1)初始化编译环境。打开x86_x64 Cross Tools Command Prompt for VS 2019,切换到.\VC\Auxiliary\Build目录下,然后运行vcvars64.bat文件。然后切换目录到openssl目录下,执行
perl Configure VC-WIN64 no-asm --prefix=D:\codestudy\task\opusstudy\openssl
如果遇到以下提示:
即提示:Can’t locate Win32/Console.pm in @INC (you may need to install the Win32::Console module)
你需要进入C:\Perl64\lib\ActivePerl(具体目录以你的安装为准)打开Config.pm将392~414行替换为:
(详见:http://tech.yushuai.xyz/2020/05/07/how-to-complie-opus-on-windows-10/)
这样再继续运行上面的语句即可,成功界面如图:
(2)进行编译安装。注意:以下与网上的大部分教程有所不同。老版本的时候,要求我们执行:
ms\do_nasmms\do_win64a
但是新的openssl已经不能这样运行,需要执行的是:
nmake
然后执行
nmake test
结果如下:
时间会特别长,完成之后,运行
nmake install
理论上以上就可以了,但是实际上1.1.1版本之后,很多模式都与以前不同了。所以此时我降回来使用1.0.2版本,这时需要执行的命令就是
perl Configure VC-WIN64Ams\do_win64anmake -f ms\ntdll.makcd out32dll..\ms\test
完成之后是这样的界面
Opustool库生成
首先clone下flac库,然后进行编译。这里编译要先编译
libFLAC_dynamec
libFLAC_static
libFLAC++_dynamic
libFLAC++_static
先编译以上四个目录再往下走。在编译之前,将ogg的工程目录中的Include\ogg目录复制到flac\include中,然后拷贝ogg生成的文件 libogg_static.lib(ogg版本太高的话,名字变为libogg.lib,此时将文件名改名即可)到flac\objs\debug\lib中。
然后编译以上四个目录,再编译整个工程。