关于MediaRecorder中的setAudioEncoder和setOutputFormat
很久没有更新博客了,最近实习一直挺忙的。最近做的项目有关使用了录音类MediaRecorder。其中有个setAudioEncoder设置编解码器和setOutputFormat和输出格式。不太明白这之间有什么约束,但是总觉得不可能是随便设置的但是Google怎么都搜不到这方面相关的,于是去稍微了解了下编码解码器的区别以及它的输出容器。这里自己记录下,也方便大家有个了解。MediaRecorder
·
很久没有更新博客了,最近实习一直挺忙的。最近做的项目有关使用了录音类MediaRecorder。其中有个setAudioEncoder设置编解码器和setOutputFormat和输出格式。不太明白这之间有什么约束,但是总觉得不可能是随便设置的但是Google怎么都搜不到这方面相关的,于是去稍微了解了下编码解码器的区别以及它的输出容器。这里自己记录下,也方便大家有个了解。
MediaRecorder.OutputFormat先看看包含的格式(总计8个)
- AAC_ADTS
- .aac
- AMR_NB
- .3gp
- AMR_WB
- .3gp
- DEFAULT
- MPEG_2_TS
- .ts
- MPEG_4
- .mp4
- .m4a
- RAW_AMR(此常数在API级别16中已被弃用)
- .3gp
- THREE_GPP
- .3gp
- WEBM
- .ogg
- mkv
MediaRecorder.AudioEncoder先看看包含的编解码器(总计7个)
- AAC(AAC低复杂度(AAC-LC)音频编解码器)
- AAC_ELD(增强型低延迟AAC(AAC-ELD)音频编解码器)
- AMR_NB(AMR(窄带)音频编解码器)
- AMR_WB(AMR(宽带)音频编解码器)
- DEFAULT
- HE_AAC(高效率AAC(HE-AAC)音频编解码器)
- VORBIS(Ogg Vorbis音频编解码器)
这就介绍完了,到这里我们可以关闭网页了。放下砖,让我慢慢说,我们稍微深入的去看看这些编解码的东西
- AAC
- 采用了全新的算法进行编码,更加高效,具有更高的“性价比”。
- 优点:相对于mp3,AAC格式的音质更佳,文件更小。
- 缺点:AAC属于有损压缩的格式。
- 其设计目标是替代原有MP3编码标准,在与MP3在相似的码率下希望质量优于MP3。这一目标已达到并且由ISO和IEC标准组织标准化在MPEG-2和MPEG-4中。
- 支持的文件类型/容器格式
- •3GPP
- .3gp
- •MPEG-4
- .mp4
- .m4a
- •ADTS原始AAC
- .aac(在Android 3.1+中解码,在Android 4.0+中编码,不支持ADIF)
- ADTS(Audio Data Transport Stream):这种格式的特征是它有一个同步的字的比特流,解码器可以在这个流中任何开始位置开始。
- DAIF:模拟数据交换模式
- •MPEG-TS
- .ts (not seekable,Android 3.0+)
- •3GPP
- 然后还有大致3个版本
- AAC_LC
- AAC低复杂度(AAC_LC)音频编解码器
- 设计用于数字电视,AAC_LC用于存储空间和计算能力有限的情况。
- AAC-LC是充分利用心理声学原理,对人类对音频信号的感知存在不相干性和统计冗余的特性,最大程度的减少用于表达信号的比特数据,实现音频信号快速有效地压缩,而不再追求输出信号和原始信号相似度。
- 重要技术点
- 支持从8到48 kHz的标准采样率的单声道/立体声/ 5.0 / 5.1内容。
- HE_AAC
- 高效率AAC(HE-AAC)音频编解码器
- 分为两个版本
- HE_AACV1(编码器 Android4.1+)
- 支持从8到48 kHz的标准采样率的单声道/立体声/ 5.0 / 5.1内容。
- HE_AACV2(增强的AAC+)
- 支持从8到48 kHz的标准采样率的立体声/ 5.0 / 5.1内容。
- 对比与AAC_LC
- 同等音频,音频文件体积(低码率下比较明显):AAC_LC > HE_AAC
- 算法复杂度:AAC_LC < HE_AAC
- 更加详细的性能对比
- HE_AACV1(编码器 Android4.1+)
- AAC_ELD
- 增强型低延迟AAC(AAC-ELD)音频编解码器
- 编码器:(Android 4.1+)
- 解码器:(Android 4.1+)
- 支持从16到48 kHz的标准采样率的单声道/立体声内容
- 能提供跟CD一样的音频质量,让用户获得无与伦比的通信体验。是唯一被广泛采用的全高清语音技术。
- AAC_LC
- AMR_NB
- AMR(窄带)音频编解码器
- 主要用于第三代移动通信 W-CDMA 系统中
- AMR-NB 支持八种速率模式。使其以更加智能的方式解决信源和信道编码的速率分配问题,根据无线信道和传输状况来自适应地选择一种编码模式进行传输,使得无线资源的配置与利用更加灵活有效。
- 模式 0(4.75kbit/s)
- 模式 1(5.15kbit/s)
- 模式 2(5.90kbit/s)
- 模式 3(6.70kbit/s)
- 模式 4(7.40kbit/s)
- 模式 5(7.95kbit/s)
- 模式 6(10.2kbit/s)
- 模式 7(12.2kbit/s)
- 在8kHz采样时为4.75至12.2 kbps
- 支持的文件类型/容器格式
- 3GPP
- .3gp
- 3GPP
- AMR_WB
- AMR(宽带)音频编解码器
- 作为第三代移动通信系统使用的语音编解码算法
- AMR-WB 音频带宽在 50Hz-7000Hz,相对于 200Hz-3400Hz 为宽带,支持九种速率模式
- 模式 0(6.60kbit/s)
- 模式 1(8.85kbit/s)
- 模式 2(12.65kbit/s)
- 模式 3(14.25kbit/s)
- 模式 4(15.85kbit/s)
- 模式 5(18.25kbit/s)
- 模式 6(19.85kbit/s)
- 模式 7(23.05kbit/s)
- 模式 8(23.85kbit/s)
- 采用的是代数码激励线性预测编码(Algebraic Code ExcitedLinear Prediction,简称 ACELP),其已被 3GPP选定为GSM和3G无线W-CDMA的宽带编码器,并将应用于IP电话、第三代移动通信、ISDN 宽带电话、ISDN 可视电话和电视会议等领域,这标志着无线和有线业务第一次采用同样的编码器。
- 9个速率从6.60 kbit / s到23.85 kbit / s采样@ 16kHz
- 支持的文件类型/容器格式
- 3GPP
- .3gp
- 3GPP
- AMR_WB和AMR_NB更多详情
- VORBIS
- Ogg Vorbis音频编解码器。
- Ogg Vorbis是一种新的音频压缩格式,类似于MP3等现有的音乐格式。
- 它是完全免费、开放和没有专利限制的。
- 支持多声道。
- 更低的码率和文件体积。
- Ogg Vorbis文件的扩展名是.ogg。
- 现在创建的OGG文件可以在未来的任何播放器上播放,因此,这种文件格式可以不断地进行大小和音质的改良,而不影响旧有的编码器或播放器。
- 支持的文件类型/容器格式
- •Ogg
- .ogg
- •Matroska
- .mkv (Android 4.0+)
- Matroska是一种新的多媒体封装格式,它可将多种不同编码的视频及16条以上不同格式的音频和不同语言的字幕流封装到一个Matroska Media文件当中。也是其中一种开放源代码的多媒体封装格式。
- •Ogg
总结说明
- 通过以上整理,我们在使用mediaRecord的时候,就不会盲目去设置AudioEncoder和OutputFormat了,而是根据实际情况来使用。
- 设置的支持的文件类型/容器格式请参考Google官方文档。
- 整理的笔记如果错误的地方,请一起交流讨论共同进步,谢谢。
- 以上资料均来自网络整理,如有侵权请告知。
更多推荐
已为社区贡献1条内容
所有评论(0)