前言
之前我们已经了解了PCM音频数据,我们理解为最原始的数据,虽然他的音质是最棒的,但是同时也暴露出两个很重要的问题:
普通播放器无法播放,数据里不包含任何跟音频格式有关的信息(声道,采样率等等);
体积过大,传输效率低;
为了解决上面的两个问题,出现了更多的音频格式。例如常见的:wav,mp3,aac等等。这一篇主要的内容就是了解wav。
正文
如果你想要录制音频并且输入wav格式的文件,你会发现mediaCodec中并没有这个格式。于是打开浏览器一顿操作,你会搜索到很多的资料,你会发现原来WAV和PCM原来这么接近。
WAV主要解决了播放器无法播放的问题,体积上并没有太大的优势。WAV可以直接包含PCM,我们只需要在PCM的前面加入WAV的头文件,就完成转换了,所以我们首先要了解WAV的头文件的内容。、
WAV头文件
wav头文件结构
上图是一个完整的WAV头文件的结构,其中一部分fact(压缩编码)在包含PCM是不需要的,因为PCM的无损无压缩的。
wav头文件详细结构图
上图是官方对于wav的头文件描述图,虽然是英文的,但是我们依次了解每一位表达的意义:
ChunkID:固定RIFF的ACSⅡ码,占4位;
ChunkSize:文件的总长度,占4位,因为不包含ChunkID和ChunkSize的长度,所以要需要减8;
Format:固定WAVE的ASCⅡ码,占4位;
Subchunk1 ID:fmt块,占4位,如果不足4位,补空格,所以是‘fmt ’;
Subchunk Size:fmt块的总长度,pcm固定16,表示从当前位置到描述fmt信息的长度,从上图计算AudioFormat到BitsPerSample的长度,长度确实是16,如果不是PCM长度可能会发生变化,占4