编译Speex生成so库文件(android-speex)
项目中需要用音频格式转换,之前使用VoAacEncoder,部分手机总是莫名崩溃,所以决定不再使用VoAacEncoder,换做Speex来完成格式转换,但是没有找到Speex的库文件,网上介绍的都是Speex的编译,以前从来没有自己折腾过这些,好在还算顺利完成了,首先感谢一下分享技术的大牛们。
- Cygwin的安装
- Cygwin编译Speex代码
Cygwin的安装
- 相关资源
Cygwin下载:https://www.cygwin.com/install.html
Windows 32位:https://www.cygwin.com/setup-x86.exe
Windows 64位:https://www.cygwin.com/setup-x86_64.exe - 安装步骤(在线安装)
Windows上安装软件没有什么需要多说的,这里直接说一下我安装时让我迷惑的地方。
需要安装的模块:
①binutils
②gcc-core
③gcc-g++
④mingw-gcc-core
⑤mingw-gcc-g++
⑥gdb
⑦make
配置Cygwin环境变量($CYGWIN/home/user/.bash_profile):
NDK=/cygdrive/d/adt-bundle-windows-x64/android-ndk-r7
export NDK
注:android-ndk-r7文件在我的D:\adt-bundle-windows-x64\android-ndk-r7目录下
配置Cygwin Windows环境变量
CYGWIN_HOME Cygwin安装目录
添加path %CYGWIN_HOME%\bin;
编译Speex代码
- 下载Speex代码
官网的speex1.2rc代码文件不全,浪费我很多时间,不建议下载。
Speex代码下载:http://pan.baidu.com/s/1pJXrw9P - 编译前项目代码结构
可以看到我的项目代码目录 -> F:\workspace\android-speex - 打开Cygwin开始编译
切换目录命令: cd /cygdrive/f/workspace/android-speex/jni
编译命令: ndk-build
编译完成
编译完成后目录结构
我使用Intellij Idea开发,虽说idea不支持ndk,但使用cygwin貌似跟ide没有半毛钱关系,也就是说完全可以抛弃eclipse来开发安卓项目了。好了,现在就可以使用编译好的Speex库了,赶紧改代码去了,写博客挺费时间。
Windows 64位离线文件:http://yun.baidu.com/s/1mgNUbSs
编译Speex生成so库文件(android-speex)的更多相关文章
- 由动态库文件dll生成lib库文件(手动生成.def文件,然后使用lib命令编译,非常牛),同理可使用dll生成.a库文件
本文基于OpenBlas的编译和安装,来说明如何从一个dll文件生成lib库文件. 参考OpenBlas的说明“Howto generate import library for MingW”,和Mi ...
- 修改OpenSSL默认编译出的动态库文件名称
在 Windows 平台上调用动态链接库 dll 文件时,有两种方式:a) 隐式的加载时链接:使用 *.lib (导入库)文件,在 IDE 的链接器相关设置中加入导入库 lib 文件的名称,或在程序中 ...
- gcc编译工具生成动态库和静态库之一----介绍
1.库的分类 根据链接时期的不同,库又有静态库和动态库之分. 静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. ...
- 编译 python 生成静态库 libpython2.7.so
由于我们是C++作驱动的Python开发,驱动需要加上Python静态库libpython2.7.so.libpython2.7.so.1.0.libpython2.7.a.此处我想在python源码 ...
- Makefile学习(二)----生成静态库文件
Lunix下编译静态库文件: .o后缀文件:编译生成的中间代码文件: .a后缀文件:静态库文件,编译的时候会合到可执行程序中,文件比较大: .so后缀文件:动态库文件,只是一个指向,不会合到可执行程序 ...
- 由动态库文件dll生成lib库文件
本文基于OpenBlas的编译和安装.来说明怎样从一个dll文件生成lib库文件. 參考OpenBlas的说明"Howto generate import library for MingW ...
- gcc编译工具生成动态库和静态库
一. 库的分类 1.1. 静态库(.a) 1.1.1. 静态库的代码在编译过程中已经被载入可执行程序,因此体积比较大.所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. 1. ...
- Android NDK入门实例 计算斐波那契数列二生成.so库文件
上一篇文章输生成了jni头文件,里面包含了本地C代码的信息,提供我们引用的C头文件.下面实现本地代码,再用ndk-build编译生成.so库文件.由于编译时要用到make和gcc,这里很多人是通过安装 ...
- Linux下编译tinyxml生成动态库
首先去到sourceforge下载tinyxml的源码,https://sourceforge.net/projects/tinyxml/?source=dlp,最新版本是2.6.2. 将下载成功的t ...
随机推荐
- QlikSense系列(1)——整体介绍
接触QlikSense(3.1 SR1)已经快一年了,在此记录自己的经验心得,为想了解QlikSense的小伙伴提供一个参考. 1.产品介绍 Qlik公司以QlikView产品成名,QlikSense ...
- layer最大话.最小化.还原回调方法使用
<head> <meta charset="UTF-8"> <title>layer最大话.最小化.还原回调方法使用</title> ...
- IntelliJ Idea使用代码折叠
VS风格: //region xxxxxxxxxxxxxx ............. //endregion 快捷键: Ctrl+Shift+”+/-”,全部展开.折叠
- 去除input 在 webkit内核浏览器 选择历史时,有一个黄色背景
input:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px white inset; } http://www.imooc.com/arti ...
- Comparison of programming paradigms
Main paradigm approaches[edit] The following are widely considered the main programming paradigms, a ...
- IDEA创建Maven工程依赖jar包爆红问题
使用IDEA创建maven工程后,在pom.xml文件中添加jar包坐标依赖后报错, 如图:
- Hibernate---criteria的具体使用列子
方法 说明 Restrictions.eq = Restrictions.allEq 利用Map来进行多个等于的限制 Restrictions.gt > Restrictions.ge > ...
- Codeforces Round #493 (Div. 2) A. Balloons 贪心水题
由于是输出任意一组解,可以将价值从小到大进行排序,第一个人只选第一个,第二个人选其余的.再比较一下第一个人选的元素和第二个人所选元素和是否相等即可.由于已将所有元素价值从小到大排过序,这样可以保证在有 ...
- 基于better-scroll封装一个上拉加载下拉刷新组件
1.起因 上拉加载和下拉刷新在移动端项目中是很常见的需求,遂自己便基于better-scroll封装了一个下拉刷新上拉加载组件. 2.过程 better-scroll是目前比较好用的开源滚动库,提供很 ...
- docker 镜像的导入导出
今天使用docker部署asp.net core应用程序时,发现当我们做好基础镜像之后需要把镜像导出到正式环境,因此学习了一下如何从docker中导出镜像: 1.首先通过docker images命令 ...