小奥的学习笔记

  • Home
  • Learning & Working
    • Speech Enhancement Notes
    • Programming language
    • Computer & DL
    • MOOC
  • Life
    • Life Time
    • Thinking & Comprehension
    • Volunteer
    • Plan
    • Travel
  • Footprints
  • GuestBook
  • About
    • About Me
    • 个人履历
    • 隐私策略
  1. 首页
  2. Study-notes
  3. Computer & DL
  4. 语音处理学习笔记
  5. 正文

在Windows10+VS2019环境下编译Opus

2020年5月7日 1997点热度 0人点赞 1条评论

Opus库生成

将Opus库clone之后,找到目录中的win32文件夹,里面有一个vs2015目录,点击这里面的opus.sln,就会打开Opus的VS工程,如果你的VS版本是2017及以上,会提示你升级版本,这个时候确认就好了(如下图所示,由于我在编写该文档的时候已经生成了opus库和libopusenc库,所以这里以opusfile库为例)。

image-20200507174728054

在打开工程之后,点击“生成->生成解决方案”。待生成完成以后,会发现在当前目录下有了“Debug”目录,里面有下图的5个文件夹及关键的opus.lib文件,这就代表生成成功了。

image-20200507174757256

libopusenc库生成

同样,打开libopusenc\win32\VS2015,里面有一个opusenc.sln,双击打开之后,就会进入工程界面,如下图所示。

image-20200507174820713

然后依旧是点击生成该解决方案,生成成功会显示下面的提示:

img

生成的目录如下图所示:

img

注意:

如下图所示,生成libopusenc库需要依赖于opus库,所以需要先编译生成opus库才可以进行本工程的编译生成。

img

opusfile库编译生成

同样是在该工程win32\VS2015下,双击opusfile.sln,打开工程,确认升级。点击生成,会提示出现错误,例如下图

img

上图提示我们缺少ogg.h文件,实际上我们在进行opus编译的时候需要依赖于ogg和openssl库,因此我们需要下载这个库并进行编译。我们看下图,确定好ogg和openssl的目录必须和opusfile同一级目录。

img

ogg的生成

首先把ogg代码clone下来,继续进入win32\VS2015目录中的libogg.sln,打开之后重新生成,结果如下:

img

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确认是否安装成功,若成功则出现下面的界面:

img

然后安装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

如果遇到以下提示:

img

即提示: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/)

这样再继续运行上面的语句即可,成功界面如图:

img

(2)进行编译安装。注意:以下与网上的大部分教程有所不同。老版本的时候,要求我们执行:

ms\do_nasm

ms\do_win64a

但是新的openssl已经不能这样运行,需要执行的是:

nmake

然后执行

nmake test

结果如下:

img

时间会特别长,完成之后,运行

nmake install

img

理论上以上就可以了,但是实际上1.1.1版本之后,很多模式都与以前不同了。所以此时我降回来使用1.0.2版本,这时需要执行的命令就是

perl Configure VC-WIN64A
ms\do_win64a
nmake -f ms\ntdll.mak
cd out32dll
..\ms\test

完成之后是这样的界面

img

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中。

然后编译以上四个目录,再编译整个工程。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: opus
最后更新:2020年5月7日

davidcheung

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

搜索
欢迎关注我的个人公众号
最新 热点 随机
最新 热点 随机
DEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架 奥地利匈牙利九日游旅程 论文阅读之Study of the General Kalman Filter for Echo Cancellation 小奥看房之鸿荣源珈誉府 杭州往返旅途及西溪喜来登和万怡的体验报告 2022年的第一篇碎碎念
奥地利匈牙利九日游旅程论文阅读之Study of the General Kalman Filter for Echo CancellationDEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架
小奥の部落格再度改版 Deep Voice Report个人翻译 能否在我污秽的思想之中找到一点纯洁的东西? 最近打算做的一些事情 生活点滴0830:岁月神偷 C++中的cin, cin.getline, getline等混合使用时不能输入直接执行下一行的问题
标签聚合
Python 高中 python学习 生活 鸟哥的linux私房菜 leetcode 算法 linux 学习 Java
最近评论
davidcheung 发布于 5 个月前(02月09日) The problem has been fixed. May I ask if you can s...
tk88 发布于 5 个月前(02月07日) Hmm is anyone else having problems with the pictur...
cuicui 发布于 9 个月前(10月20日) :wink:
niming 发布于 10 个月前(09月19日) 同级校友,能刷到太巧了
davidcheung 发布于 2 年前(08月16日) 我得找一下我之前整理的word文档看一下,如果找到了我就更新一下这篇文章。
Nolan 发布于 2 年前(07月25日) 您的笔记非常有帮助。贴图不显示了,可以更新一下吗?
davidcheung 发布于 3 年前(06月19日) 到没有看webrtc的代码。现在主要在看我们公司的代码了。。。只是偶尔看一看webrtc的东西。。。
aobai 发布于 3 年前(03月13日) gain_change_hangover_ 应该是每三个block 只能够调整一次,这样保证每帧...
匿名 发布于 5 年前(12月30日) 烫
小奥 发布于 5 年前(12月12日) webRTC里面的NS本身我记得就是在C++里面呀

COPYRIGHT © 2025 小奥的学习笔记. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

陕ICP备19003234号-1

鲁公网安备37120202000100号