opus 编解码库在windows、android、linux上使用
windows10
Visual Studio 2017
opus 1.3 下载地址:https://archive.mozilla.org/pub/opus/opus-1.3.tar.gz
eclipse 2018-12
java8
打开->项目/解决方案->选择win32/VS2015/opus.sln
检查解决方案操作中使用默认勾选,点击确认
在解决方案资源管理器中可以看到导入了5个项目
在opus项目上右键->设为启动项目,并配置x64编译
生成->生成opus,在输出窗口可以看到编译过程,编译完成后在win32/VS2015/x64/Debug目录下会生成opus.lib静态库。
分别将opus_demo、test_opus_api、test_opus_decode、test_opus_encode设置为启动项目并运行,运行过程中没有报错,则说明opus.lib库正确且可用。
按照java\opus\src\cn\com\test\opus中OpusEncoder.java和OpusDecoder.java中定义的native接口生成.h文件
命令如下:
java\opus\src目录下
javah -classpath . -jni cn.com.test.opus.OpusEncoder
javah -classpath . -jni cn.com.test.opus.OpusDecoder
生成cn_com_test_opus_OpusEncoder.h和cn_com_test_opus_OpusDecoder.h
- 文件->新建->项目
- 设置项目,不使用预编译头
- 删除系统自动生成的源文件和头文件
- 将上一步中生成的.h文件拷贝到\win32\opusjni目录下,在opusjni工程上右键->添加->添加现有项,将.h文件添加到工程。
- 在opusjni工程中创建cn_com_test_opus_OpusEncoder.c和cn_com_test_opus_OpusDecoder.c用来实现jni接口。
- 导入jni头文件,在工程上右键->属性
- 导入opus头文件,在工程上右键->属性,导入如下目录
..\..\win32
..\..\celt
..\..\silk
..\..\include
..\..
- 导入opus.lib库,在工程上右键->属性
添加依赖库目录
添加依赖库
- 编译生成opusjni.dll
生成->生成opusjni,在输出窗口可以看到编译过程,编译完成后在win32/VS2015/x64/Debug目录下会生成opusjni.dll动态库。
创建opus java工程,按照java\opus\src\cn\com\test\opus目录下源码编写opus测试用例,在opus工程上右键->属性,导入在上一步生成的dll动态库。
运行opus java工程,会在java\opus\src目录下生成 源PCM->opus->PCM文件
使用软件打开PCM数据进行比较,可以看出音频波形大致相同。
参考:https://www.cnblogs.com/charles04/p/3906102.html
-
下载工程
git clone https://github.com/user-ZJ/opus.git -
配置并编译工程
在opus目录下
autoreconf -vfi
配置编译选项,将输出目录指定为opus/output
./configure --prefix=/home/zack/github/opus/output make;make install
在opus/output/lib目录下生成libopus.so库
- 将上面编写好的jni代码拷贝到ubuntu/opusjni目录下
- 编写Makefile文件,如ubuntu/opusjni/Makefile
- make生成libopusjni库
- 使用ldd -r libopusjni.so命令查看libopusjni库是否正确
同window版本,使用linux版本eclipse,导入java目录下的工程,将连接libopusjni.dll库修改为链接libopusjni.so库。
opus.md