编译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 ...
随机推荐
- 有关PHP数组
在PHP中,数组就是关键字和值的集合,我们可以使用array关键字创建: $arr=array[100,200,300,400,500]: //这是一个自定义数组,数组里面的值是自 ...
- php 生成不重复的随机字符串
md5(uniqid(md5(microtime(true)),true))
- mysql面试几个问题
1.为什么InnoDB表最好要有自增列做主键? InnoDB引擎表是基于B+树的索引组织表(IOT) 关于B+树 (图片来源于网上) B+ 树的特点: a.所有关键字都出现在叶子结点的链表中(稠密索引 ...
- C++ 简单内存泄漏检测方法
遇到个bug,MFC程序异常退出,debug模式下输出 Detected memory leaks! Dumping objects -> {366566} normal block at 0x ...
- Java中更精确的计时
我们一般的java运输计时代码是 long begintime = System.currentTimeMillis(); //运算代码 long endtinme=System.currentTim ...
- Side effect (computer science)
In computer science, a function or expression is said to have a side effect if it modifies some stat ...
- 手机上最简洁的"云笔记"软件
❗️注意:该文并不是真的给你介绍各类云笔记的对比 第三方云笔记的缺点 以前用MIUI和Flyme时,自带的记事本很好用,小巧简洁,路上想起什么就写下来,回去后登录网上的个人中心,拿出来加工一下就可以发 ...
- Codeforces Round #499 (Div. 2) D. Rocket_交互题_二分
第一次作交互题,有点不习惯. 由于序列是循环的,我们可以将一半的机会用于判断当前是否是在说谎,另一半的机会用于二分的判断. 对于判断是否实在说谎,用1判断即可.因为不可能有比1还小的数. 本题虽然非常 ...
- UVALive-8077 Brick Walls 找规律
题目链接:https://cn.vjudge.net/problem/UVALive-8077 题意 有一个用砖头磊起来的墙,现在又有一只蚂蚁,想沿着砖缝从起点跑到终点. 问最短路长度. 思路 找规律 ...
- MySQL 数据备份与还原 转载
MySQL 数据备份与还原 一.数据备份 1.使用mysqldump命令备份 mysqldump命令将数据库中的数据备份成一个文本文件.表的结构和表中的数据将存储在生成的文本文件中. mysqldum ...