Android音频格式转换,Android音视频系列(八):了解音频格式WAV以及与PCM的转换...

本文介绍了如何将PCM音频数据转换为WAV格式,详细解析了WAV头文件的结构,并提供了实现PCM转WAV的伪代码,帮助理解两者之间的转换过程。
摘要由CSDN通过智能技术生成

前言

之前我们已经了解了PCM音频数据,我们理解为最原始的数据,虽然他的音质是最棒的,但是同时也暴露出两个很重要的问题:

普通播放器无法播放,数据里不包含任何跟音频格式有关的信息(声道,采样率等等);

体积过大,传输效率低;

为了解决上面的两个问题,出现了更多的音频格式。例如常见的:wav,mp3,aac等等。这一篇主要的内容就是了解wav。

正文

如果你想要录制音频并且输入wav格式的文件,你会发现mediaCodec中并没有这个格式。于是打开浏览器一顿操作,你会搜索到很多的资料,你会发现原来WAV和PCM原来这么接近。

WAV主要解决了播放器无法播放的问题,体积上并没有太大的优势。WAV可以直接包含PCM,我们只需要在PCM的前面加入WAV的头文件,就完成转换了,所以我们首先要了解WAV的头文件的内容。、

WAV头文件

1e66cff300de

wav头文件结构

上图是一个完整的WAV头文件的结构,其中一部分fact(压缩编码)在包含PCM是不需要的,因为PCM的无损无压缩的。

1e66cff300de

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值