项目中需要用音频格式转换,之前使用VoAacEncoder,部分手机总是莫名崩溃,所以决定不再使用VoAacEncoder,换做Speex来完成格式转换,但是没有找到Speex的库文件,网上介绍的都是Speex的编译,以前从来没有自己折腾过这些,好在还算顺利完成了,首先感谢一下分享技术的大牛们。

  • Cygwin的安装
  • Cygwin编译Speex代码

Cygwin的安装

  1. 相关资源

    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
  2. 安装步骤(在线安装)

    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代码

  1. 下载Speex代码

    官网的speex1.2rc代码文件不全,浪费我很多时间,不建议下载。

    Speex代码下载:http://pan.baidu.com/s/1pJXrw9P
  2. 编译前项目代码结构



    可以看到我的项目代码目录 -> F:\workspace\android-speex
  3. 打开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)的更多相关文章

  1. 由动态库文件dll生成lib库文件(手动生成.def文件,然后使用lib命令编译,非常牛),同理可使用dll生成.a库文件

    本文基于OpenBlas的编译和安装,来说明如何从一个dll文件生成lib库文件. 参考OpenBlas的说明“Howto generate import library for MingW”,和Mi ...

  2. 修改OpenSSL默认编译出的动态库文件名称

    在 Windows 平台上调用动态链接库 dll 文件时,有两种方式:a) 隐式的加载时链接:使用 *.lib (导入库)文件,在 IDE 的链接器相关设置中加入导入库 lib 文件的名称,或在程序中 ...

  3. gcc编译工具生成动态库和静态库之一----介绍

     1.库的分类 根据链接时期的不同,库又有静态库和动态库之分. 静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. ...

  4. 编译 python 生成静态库 libpython2.7.so

    由于我们是C++作驱动的Python开发,驱动需要加上Python静态库libpython2.7.so.libpython2.7.so.1.0.libpython2.7.a.此处我想在python源码 ...

  5. Makefile学习(二)----生成静态库文件

    Lunix下编译静态库文件: .o后缀文件:编译生成的中间代码文件: .a后缀文件:静态库文件,编译的时候会合到可执行程序中,文件比较大: .so后缀文件:动态库文件,只是一个指向,不会合到可执行程序 ...

  6. 由动态库文件dll生成lib库文件

    本文基于OpenBlas的编译和安装.来说明怎样从一个dll文件生成lib库文件. 參考OpenBlas的说明"Howto generate import library for MingW ...

  7. gcc编译工具生成动态库和静态库

    一. 库的分类 1.1. 静态库(.a) 1.1.1. 静态库的代码在编译过程中已经被载入可执行程序,因此体积比较大.所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. 1. ...

  8. Android NDK入门实例 计算斐波那契数列二生成.so库文件

    上一篇文章输生成了jni头文件,里面包含了本地C代码的信息,提供我们引用的C头文件.下面实现本地代码,再用ndk-build编译生成.so库文件.由于编译时要用到make和gcc,这里很多人是通过安装 ...

  9. Linux下编译tinyxml生成动态库

    首先去到sourceforge下载tinyxml的源码,https://sourceforge.net/projects/tinyxml/?source=dlp,最新版本是2.6.2. 将下载成功的t ...

随机推荐

  1. Linux目录结构(一)

    linux文件系统的最顶端是/,称为linux的root,所有的目录.文件.设备都在/之下. 文件类型 linux有四种基本文件系统类型:普通文件.目录文件.连续文件和特殊文件.可以用file命令来识 ...

  2. form&method【POST~GET】

    <form.../>中method属性指定了该表单是以哪种方式提交请求,有两种方式:GET请求方式和POST请求方式,默认是GET请求方式.两种方式的区别:get方式的请求是在浏览器地址栏 ...

  3. javascript中缓存

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. <Android Framework 之路>Android5.1 Camera Framework(一)

    Android5.0 Camera Framework 简介 CameraService启动 CameraService是在MediaServer启动过程中进行的 main_mediaserver.c ...

  5. Simula-Virtual function

    Simula is the name of two simulation programming languages, Simula I and Simula 67, developed in the ...

  6. URL回车后发生了什么

    1.解析URL ________________________________________________________________________ 关于URL: URL(Universa ...

  7. css——样式的继承

    css的样式继承 在上面这段代码中,p{}为父类,b{}为子类.b{}将继承p{}. 因为<b>在<p>里面,p{}为父类,b{}为子类. 继承方式: 如果子类没有,父类有,则 ...

  8. 百度图标echarts.js的使用

    echarts官网:http://echarts.baidu.com/api.html#echarts echarts是百度公司开的一种开源制作图片工具,是一个专门制作图表的开源工具,功能非常强大,地 ...

  9. 关于Number的属性和方法你知晓几分?速来围观!

    1.Number.isFinite() 方法用来检测传入的参数是否是一个有穷数(finite number)返回值为布尔值. 和全局的 isFinite() 函数相比,这个方法不会强制将一个非数值的参 ...

  10. debian 9 安装无线网卡

    #添加源 echo "deb http://httpredir.debian.org/debian/ stretch main contrib non-free" >> ...