package cn.org.hentai.jtt1078.util;
|
|
/**
|
* Created by matrixy on 2019/12/18.
|
*/
|
public final class WAVUtils
|
{
|
/**
|
* 创建WAV头,仅返回WAV头部字节数组信息
|
* @param dataLength PCM数据字节总
|
* @param channels 通道数,通常为1
|
* @param sampleRate 采样率,通常为8000
|
* @param sampleBits 样本比特位数,通常为16
|
* @return
|
*/
|
public static byte[] createHeader(int dataLength, int channels, int sampleRate, int sampleBits)
|
{
|
Packet p = Packet.create(44);
|
p.addBytes("RIFF".getBytes())
|
.addBytes(ByteUtils.toLEBytes(dataLength + 36))
|
.addBytes("WAVE".getBytes()) // wave type
|
.addBytes("fmt ".getBytes()) // fmt id
|
.addInt(0x10000000) // fmt chunk size
|
.addShort((short)0x0100) // format: 1 -> PCM
|
.addBytes(ByteUtils.toLEBytes((short)channels)) // channels: 1
|
.addBytes(ByteUtils.toLEBytes(sampleRate)) // samples per second
|
.addBytes(ByteUtils.toLEBytes(1 * sampleRate * sampleBits / 8)) // BPSecond
|
.addBytes(ByteUtils.toLEBytes((short)(1 * sampleBits / 8))) // BPSample
|
.addBytes(ByteUtils.toLEBytes((short)(1 * sampleBits))) // bPSecond
|
.addBytes("data".getBytes()) // data id
|
.addBytes(ByteUtils.toLEBytes(dataLength)); // data chunk size
|
|
return p.getBytes();
|
}
|
}
|