目前只支持文件和二进制数组
上代码
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
public final class Pcm2WavUtils {
private Pcm2WavUtils () {}
public static byte[] parse(byte[] source) throws IOException {
float sampleRate = 16000;
int sampleSizeInBits = 16;
int channels = 1;
boolean signed = true;
boolean bigEndian = false;
AudioFormat af = new AudioFormat(sampleRate, sampleSizeInBits, channels, signed, bigEndian);
try (
AudioInputStream in = new AudioInputStream(new ByteArrayInputStream(source), af, source.length);
ByteArrayOutputStream out = new ByteArrayOutputStream();
) {
AudioSystem.write(in, AudioFileFormat.Type.WAVE, out);
byte[] bs = out.toByteArray();
return bs;
}
}
public static void parse (File source, File target) throws IOException {
float sampleRate = 16000;
int sampleSizeInBits = 16;
int channels = 1;
boolean signed = true;
boolean bigEndian = false;
AudioFormat af = new AudioFormat(sampleRate, sampleSizeInBits, channels, signed, bigEndian);
try (
AudioInputStream in = new AudioInputStream(new FileInputStream(source), af, source.length());
FileOutputStream out = new FileOutputStream(target);
) {
AudioSystem.write(in, AudioFileFormat.Type.WAVE, out);
}
}
}