编译 Android 版本的 Opus 音频编解码库的方法
Opus 音频编解码库是 Speex 音频编解码库的下一代版本,从编解码性能以及质量上来讲都有了长足的进步。Opus 的编译非常简单,但是官方并未给出详细的 Android 版本编译指南,查找了大量资料,经过多次试验,总结了一套成功的方法,具体如下:
1. 确保你的机器上安装有 android ndk,并下载最新的 opus 源代码。
2. android ndk 因为包含了针对多个 android 系统版本(api level)的编译器工具链文件,但是并未直接提供一个具体可用的工具链,因此需要借助 ndk 生成一套编译器工具链,前提是你必须要指定该工具链所针对的具体 android 系统版本,这里以 api level 14(对应 android 4.0)为例,生成针对它的编译器工具链,使用如下命令:
~/android-ndk-r10e/build/tools/make-standalone-toolchain.sh --platform=android-14 --install-dir=/tmp/my_toolchain
3. 定义环境变量,用于临时的编译,使用如下命令:
export PATH=/tmp/my_toolchain/bin/:$PATH
export CC=arm-linux-androideabi-gcc
export CXX=arm-linux-androideabi-g++
4. 配置并创建 opus 源代码的 Makefile 编译配置文件,使用如下命令:
./configure --host=arm-linux-androideabi
5. 编译 opus 源代码并生成库文件,使用如下命令:
make
注意,make 命令将自动编译源代码并生成库文件(静态库及动态库),库文件位于 opus 源代码所在目录中的某个子目录内,可能该子目录名字以“.”开头,所以可以用 ls -a 命令来查看一下。因为这里我们编译的是 for android 的版本,所以我们不要再执行 make install 了。
编译 Android 版本的 Opus 音频编解码库的方法的更多相关文章
- android 音频编解码1
1. Android 官方的 MediaCodec API 该 API 是在 Andorid 4.1 (API 16) 版本引入的 MediaCodec 使用的基本流程是: 1234567891011 ...
- FFMPEG视音频编解码零基础学习方法-b
感谢大神分享,虽然现在还看不懂,留着大家一起看啦 PS:有不少人不清楚“FFmpeg”应该怎么读.它读作“ef ef em peg” 0. 背景知识 本章主要介绍一下FFMPEG都用在了哪里(在这里仅 ...
- [总结]FFMPEG视音频编解码零基础学习方法
在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者.在和大家探讨的过程中,我忽然发现了一个问题:在“ ...
- [转载] FFMPEG视音频编解码零基础学习方法
在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者.在和大家探讨的过程中,我忽然发现了一个问题:在“ ...
- [总结]FFMPEG视音频编解码零基础学习方法【转】
本文转载自:http://blog.csdn.net/leixiaohua1020/article/details/15811977 在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFM ...
- [转]FFMPEG视音频编解码零基础学习方法
在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者.在和大家探讨的过程中,我忽然发现了一个问题:在“ ...
- [总结]FFMPEG视音频编解码零基础学习方法--转
ffmpeg编解码学习 目录(?)[-] ffmpeg程序的使用ffmpegexeffplayexeffprobeexe 1 ffmpegexe 2 ffplayexe 3 ffprobeexe ...
- FFMPEG视音频编解码零基础学习方法
在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者.在和大家探讨的过程中,我忽然发现了一个问题:在“ ...
- 【转】[总结]FFMPEG视音频编解码零基础学习方法
在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者.在和大家探讨的过程中,我忽然发现了一个问题:在“ ...
随机推荐
- Voyager下的Settings方法
设置网站标题,logo,描述: 自定义setting字段,添加group为文章,key为title的字段: 添加成功: 前端页面写法: <img src="{{ Voyager::im ...
- 预防cdn链接失效,无缝切换本地文件
如今的前端项目追求的不仅仅是能用能看的程度,而是愈发追求项目的性能,对用户体验的影响.而现在的开发工具在性能优化方面也替我们做很大一部分的工作,想必大家对CDN的使用都是轻车熟路了,但是大家有没有考虑 ...
- 不可取代的网站开发工具---------dreamweaver
现在web开发的工具越来越多,sublime text,webstorm等web开发工具日益崛起,一直威胁着当年网页三剑客之一的dreamweaver工具的地位,然而dreamweaver却是无法取代 ...
- Deep Android Malware Detection小结
题目:Deep Android Malware Detection 作者:Niall McLaughlin, Jesus Martinez del Rincon, BooJoong Kang 年份:2 ...
- TensorFlow学习笔记(6):TensorBoard之Embeddings
本文基于TensorFlow官网的How-Tos写成. TensorBoard是TensorFlow自带的一个可视化工具,Embeddings是其中的一个功能,用于在二维或三维空间对高维数据进行探索. ...
- zabbix2.4升级到2.5 --考虑升级到zabbix3.0
现在zabbix服务器,zabbix服务日志频繁出现MySQL server has gone away,经搜索,此问题在zabbix2.5之前是zabbix的一个bug,zabbix2.5后已经修 ...
- [python xml 学习篇][0]
tree = ET.parse("Result.xml")root = tree.getroot()print type(root)print root.tag # 得到root ...
- 矩阵快速幂在ACM中的应用
矩阵快速幂在ACM中的应用 16计算机2黄睿博 首发于个人博客http://www.cnblogs.com/BobHuang/ 作为一个acmer,矩阵在这个算法竞赛中还是蛮多的,一个优秀的算法可以影 ...
- asp.net的Context.Cache缓存过期策略
最近使用Context.Cache需要了解Cache的缓存过期策略. 文章:ASP.NET缓存中Cache过期的三种策略
- DS博客作业05--树
1.本周学习总结 1.思维导图 2.谈谈你对树结构的认识及学习体会 学完树之后,最大的感觉就是在处理节点之间的兄弟父亲关系的时候真的挺好用的,一目了然.不过,树令人比较头疼的就是要用递归,大致能懂递归 ...