转载地址:http://ticktick.blog.51cto.com/823160/1752947
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
/*
* COPYRIGHT NOTICE
* Copyright (C) 2016, Jhuster <lujun.hust@gmail.com>
* https://github.com/Jhuster/AudioDemo
*
* @license under the Apache License, Version 2.0
*
* @file WavFileHeader.java
*
* @version 1.0
* @author Jhuster
* @date 2016/03/19
*/
package
com.jhuster.audiodemo.api;
public
class
WavFileHeader {
public
String mChunkID =
"RIFF"
;
public
int
mChunkSize =
0
;
public
String mFormat =
"WAVE"
;
public
String mSubChunk1ID =
"fmt "
;
public
int
mSubChunk1Size =
16
;
public
short
mAudioFormat =
1
;
public
short
mNumChannel =
1
;
public
int
mSampleRate =
8000
;
public
int
mByteRate =
0
;
public
short
mBlockAlign =
0
;
public
short
mBitsPerSample =
8
;
public
String mSubChunk2ID =
"data"
;
public
int
mSubChunk2Size =
0
;
public
WavFileHeader() {
}
public
WavFileHeader(
int
sampleRateInHz,
int
bitsPerSample,
int
channels) {
mSampleRate = sampleRateInHz;
mBitsPerSample = (
short
)bitsPerSample;
mNumChannel = (
short
)channels;
mByteRate = mSampleRate*mNumChannel*mBitsPerSample/
8
;
mBlockAlign = (
short
)(mNumChannel*mBitsPerSample/
8
);
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
private
static
byte
[] intToByteArray(
int
data) {
return
ByteBuffer.allocate(
4
).order(ByteOrder.LITTLE_ENDIAN).putInt(data).array();
}
private
static
byte
[] shortToByteArray(
short
data) {
return
ByteBuffer.allocate(
2
).order(ByteOrder.LITTLE_ENDIAN).putShort(data).array();
}
private
static
short
byteArrayToShort(
byte
[] b) {
return
ByteBuffer.wrap(b).order(ByteOrder.LITTLE_ENDIAN).getShort();
}
private
static
int
byteArrayToInt(
byte
[] b) {
return
ByteBuffer.wrap(b).order(ByteOrder.LITTLE_ENDIAN).getInt();
}
|