手机mp3转ogg格式 android播放mp3文件( 五 )


总结
优点:MediaCodec是Android重要的底层多媒体组件 , 合理使用MediaCodec可以实现播放器、直播、视频编辑、视频录制、视频通话、视频会议等几乎所有音视频相关的编解码功能 , 且与常规编解码库相比拥有绝对的性能优势 。不足:MediaCodec也存在一些缺点 , 兼容性、稳定性都比较差 , 开发过程中会经常遇到机型、版本等适配问题 , 这些都可以通过适配合理解决 。四、音频NDK API开发如果遇到一些要求更高的项目开发 , 对音频有高性能的需求 , 比如说:所需的不仅仅是简单的声音播放或录制功能 。它们需要响应式实时系统行为 。一些典型用例如:音频合成器、电子鼓、音乐学习应用、DJ 混音、音效、视频/音频会议等这类要求特别高的需求时 。就要从更深层次的底层来提供功能支持 , 这里就会用到NDK开发 。
首先来了解一下NDK , 全称是Native Development Kit , 翻译为原生开发工具包 , 主要的作用是可以让开发者在Android应用中利用C和c++代码的工具,可用以从自己的源代码构建,或者利用现有的预构建库 。
本部分的内容可以在如下的Android官方网站中进行查看和学习:https://developer.android.google.cn/ndk/guides/audio
Android官方给提供了如下选择:
OpenSL ES:全称为Open Sound Library for Embedded Systems , 嵌入式音频加速标准 。OpenSL ES是无授权费、跨平台、针对嵌入式系统精心优化的硬件音频加速 API , 为嵌入式移动多媒体设备上的本地 应用程序开发者提供了标准化、高性能、低响应时间的音频功能实现 ***  , 同时还实现了软/硬件音频性能的直接跨平台部署 , 不仅降低了执行难度 , 而且促进了高级音频市场的发展 。与Android的关系:Android 2.3即API9时开始支持 OpenSL ES 标准 , 通过 NDK 提供相应的 API 开发接口 。Android 实现的OpenSL ES只是OpenSL的子集 , 然后进行了扩展 。Android 中OpenSL ES的相关资料:https://developer.android.google.cn/ndk/guides/audio/openslAAudio:在 Android 8.0 版本后引入的音频库 , 该音频库需要使用C语言在Native层进行调用 , 属于NDK开发范畴。AAudio是OpenSL ES 库的轻量级实现 , 同样具有低延迟 , 高性能的特点 。需要特别注意的是 , AAudio作为一款定位为轻量级的音频库 , 只提供写入音频流进行发音的功能 , 不负责音频设备管理 , 文件 I / O , 音频编解码 等操作 ;音频输入:从话筒 , 耳机等音频输入设备中 , 使用AAudio音频流采集音频数据 , 读取性能高 , 低延迟。音频输出:将音频流写入到 AAudio , 以极高性能方式将音频流输出到发音设备中。Oboe:该库是基于AAudio封装的一个开源库 , 在github上有开源的地址 , 链接如下:https://github.com/google/oboe 该库与AAudio是使用C++编写的适用于Android开发的高效率的音频开发 , 依然属于NDK开发的范畴 。Google官方推荐使用该库 。五、音频算法的开源库FFmpeg:路人皆知FFmpeg是一套可以用来记录、转换数字音频、视频 , 并能将其转化为流的开源程序 。它提供了录制、转换以及流化音视频的完整解决方案 。它包含了非常先进的音频/视频编解码库libavcodec , 为了保证高可移植性和编解码质量 , libavcodec里很多code都是从头开发的 。
只要是做音视频开发的开发者 , 几乎没有不知道FFmpeg库的 。在github上可以找到FFmpeg的主页地址如下:https://github.com/FFmpeg/FFmpeg 官方网站的地址是:https://ffmpeg.org/
其中包含的库主要包括:
libavcodec:音/视频编码库 。libavformat:音视频格式的生成和解析等操作 。libavutil:公共的工具函数 。该程序最初在Linux平台上开发和使用 , 目前在windows、mac上均可以使用 。
在Android中使用FFmpeg如果需要在Android中使用FFmpeg , 需要进行集成 。需要经过几个步骤:
编译:首先要下载FFmpeg , 并进行编译 , 编译出Android中需要的文件 。将编译后的内容集成到Android项目中 。测试并调用集成的FFmpeg中的 ***。SpeexSpeex主要是针对语音的开源免费 , 无专利保护的一种音频压缩格式 , 是专门为码率在2-44kbps的语音压缩而设计 。Speex的特点主要包括:
窄带(8kHz) , 宽带(16kHz)和超宽带(32kHz)压缩于同一位流可变比特率(VBR)非连续传输(DTX)感官回声消除(AEC)噪音屏蔽SlikSlik算法主要的作用是实现语音和音频的编解码 , 其主要的特点是:

推荐阅读