先说为什么吧!
怎么要编译这个库呢?因为我最近在做一个事情,需要传音频。了解到用opus去传输加上转码时会,会比较划算。
我的第一次尝试是用java去转码,发现效率不高,一个次8000byte的包,大概是8kb吧,耗时60毫秒左右,这样子算下来,是不划算的,即使转码后的大小只有原来的1/10.
所以我就选择用native的方式去转码了。简单点说,就是用java去调用native库转码。C实现的效率会高很多,我先问了AI,AI说可以快6倍,实际测下来,快了10倍。
于是我就走上了编译libopus的库。
android的可以不编译
直接从这里搞来吧
https://github.com/TrillGates/android-opus-codec
Mac和Linux的呢?
我在是mac上开发的,部署是在Linux上 所以我两个都要编译
代码地址
https://github.com/TrillGates/opus
注意,看文档,哈哈哈哈!
我直接就上手了,安装工具
0) Set up a development environment:
On an Ubuntu or Debian family Linux distribution:
% sudo apt-get install git autoconf automake libtool gcc make
On a Fedora/Redhat based Linux:
% sudo dnf install git autoconf automake libtool gcc make
Or for older Redhat/Centos Linux releases:
% sudo yum install git autoconf automake libtool gcc make
On Apple macOS, install Xcode and brew.sh, then in the Terminal enter:
% brew install autoconf automake libtool
但是我是按后面git clone下来编译的,在配置的时候,下载特别慢。
但是前面有一句:
To build from a distribution tarball, you only need to do the following:
% ./configure
% make
也就是我们可以直接从release里下载下来,然后进去编译,这个快多了,一下子就编译好了 。
./configure 完如下图

然后再make

输出的内容在.libs目录下
我这个是在mac os下编译的,所以lib库的后缀是dylib,也就是动态库的意思。

下面这个是我在ubuntu上编译的

怎么引用呢,可以参考这个文章
java jni开发,System.loadLibraryt()和System.load()区别是什么?
以下是转换的耗时参考

