Android音视频-存储和解析音频文件

来源:互联网 发布:大数据 双月刊 编辑:程序博客网 时间:2024/06/07 22:43

对于PCM这个概念前面也看了一些,我现在最简单直接的认识就是它就是音频文件的原始数据,好像图形文件的内容的原始二进制数据一样。我们要把这些数据以文件来保存弄到文件里面去。根据现在Android提供的API记录下面两种方式。

AudioRecord和AudioTrack存储和解析音频文件

简介

在前面已经知道了使用这两个类来工作了,它们是一个偏向底层的类,操作最原始的音频数据PCM的。下面要引入一个概念wav文件,这是我们见过的一种音频文件,也是最基础简单的音频文件,因为它差不多等同于PCM,因为只是在文件上面添加了一些头,然后把PCM数据在数据块直接写入。

  • 什么是WAV格式?

    它是微软开发的一种文件格式,把文件分为两部分,头部记录音频的基本信息,数据部分记录原始的PCM音频数据。
    WAV文件的数据压缩率小,所以会比较大,它就是纯粹来说差不多都是音频原始数据。

wav格式的音频文件不要额外的编码解码的,很方便我们来使用AudioRecord和AudioTrack来采集和播放保存为文件来处理的示例代码,这里唯一要做的就是如何操作为一个正常的wav文件,存储和解析那些头部信息,然后播放原始音频PCM数据。

小结

AudioRecord可以实现边录边播以及对音频实时处理功能这是MediaRecord和MediaPlayer无法做到的;可以通过代码对音频数据进行封装,可扩展性很大;输出的是PCM音频数据,如果只保存这些数据,是不能被其他播放器播放的,所以要写代码进行编码和压缩处理。
示例的demo实现难点在于对于wav文件的生成和解析头部。具体的解析文件介绍参考这里

MediaRecorder和MediaPlayer存储和解析音频文件

简介

MediaRecorder集成了录音编码,压缩等功能,MediaPlayer集成了解码播放功能,支持少量的音频格式文件,例如aac,amr,3gp。它使用起来比上面的要简单一些,毕竟是一个较上层一点的API。

小结

这两个API使用起来相比较为简单;但是它们不能处理边录边播;输出的音频格式不是很多,mp3就不能输出。

音频格式

音频格式有很多种,我们开始的时候看着这么多,头很懵。格式简介参考

demo代码参考

参考资料:
使用的示例代码参考这篇博客来的,写的很详细