java音频解析_wav音频文件头动态解析--java语言

本文介绍了如何使用Java解析WAV音频文件头,包括RIFF、fmt 和Data chunks的解析,涉及数据块结构、字节转换方法以及处理扩展区和可选chunk的策略。
摘要由CSDN通过智能技术生成

之前有处理过一些相对较为不常见的音频格式,也睬过很多坑,这里做一下简单记录。后面可能随着接触音频类型的增多做进一步更新,像之前有记录过包含LIST数据块的wav格式录音就是调试过程中发现遗漏点。

在此之前先整理一下常规音频文件头的基本结构,如下图:

c1243b48a3a4afcdfb19c178c33b8225.png

可以看到在文件头中,不同位置的字节代表不同的数据块。相对来说,大部分情况一些数据块的信息是关注度不高的,像LIST数据块,而另一些诸如音频长度,格式,位长,采样率等等是关注度较高的,所以在处理过程中可以把需要的数据块定义成一个通用的结构,在解析后设置该结构对应的结果返回。对于wav文件来说,以chunk为基本存储单位,一个wav文件包含3个必要chunk和一个可选chunk,在文件中排列循序是:RIFF chunk ,Format chunk ,Fact chunk(可选),Data chunk。

所以在从前往后读取文件头并解析时,riff chunk和fm chunk时固定的。chunk划分如下:

8c5f4c9681ca0f60c8a0585d16dc4857.png

根据其不同数据块的次序和长度以及字节长度,可以定义一份固定的riff和fm chunk的结构如下:

{ "name" : "riff_id", "index" : 0, "type" : "chars", "len" : 4, "value" : "RIFF" }, { "name" : "file_size", "index" : 1, "type" : "int", "len" : 4, "value" : 0 }, { "name" : "riff_type", "index" : 2, "type" : "chars", "len&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值