java 播放.pcm文件,java播发PCM文件
java播放PCM文件
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;
public class test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
File file = new File("OutPcm.pcm");
System.out.println(file.length());
int offset = 0;
int bufferSize = Integer.valueOf(String.valueOf(file.length())) ;
byte[] audioData = new byte[bufferSize];
InputStream in = new FileInputStream(file);
in.read(audioData);
float sampleRate = 16000;
int sampleSizeInBits = 16;
int channels = 1;
boolean signed = true;
boolean bigEndian = false;
// sampleRate - 每秒的樣本數
// sampleSizeInBits - 每個樣本中的位數
// channels - 聲道數(單聲道 1 個,立體聲 2 個)
// signed - 指示數據是有符號的,還是無符號的
// bigEndian - 指示是否以 big-endian 字節順序存儲單個樣本中的數據(false 意味著
// little-endian)。
AudioFormat af = new AudioFormat(sampleRate, sampleSizeInBits, channels, signed, bigEndian);
SourceDataLine.Info info = new DataLine.Info(SourceDataLine.class, af, bufferSize);
SourceDataLine sdl = (SourceDataLine) AudioSystem.getLine(info);
sdl.open(af);
sdl.start();
while (offset < audioData.length) {
offset += sdl.write(audioData, offset, bufferSize);
}
} catch (LineUnavailableException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
總結
以上是生活随笔為你收集整理的java 播放.pcm文件,java播发PCM文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 获取每年的节假日,shell获取
- 下一篇: 战地2042飞机怎么躲导弹