我在做采集麥克風音頻的時候出現了問題,在open這里拋出了例外,提示我大端位元組序不支持,但是我改成小端位元組序同樣還是會提示小端位元組序不支持,請各位大佬給解惑,感謝。積分不夠了,抱歉
try {
AudioFormat format = new AudioFormat(8000, 16, 1, true, true);
TargetDataLine targetDataLine = AudioSystem.getTargetDataLine(format);
targetDataLine.open(format);
targetDataLine.start();
System.out.println("錄音中");
//直接播放出來
SourceDataLine sourceDataLine = AudioSystem.getSourceDataLine(format);
sourceDataLine.open(format);
sourceDataLine.start();
System.out.println("播放中");
//開子執行緒進行播放
byte[] b = new byte[1024];//快取音頻資料
new Thread(new Runnable() {
public void run() {
int a = 0;
while(a!=-1) {
System.out.println("錄制中");
a = targetDataLine.read(b, 0, b.length);//捕獲錄音資料
if(a!=-1) {
sourceDataLine.write(b, 0, a);//播放錄制的聲音
}
}
}
}).start();
}catch (LineUnavailableException e) {
e.printStackTrace();
}
javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 8000.0 Hz, 16 bit, mono, 2 bytes/frame, big-endian not supported.
at com.sun.media.sound.DirectAudioDevice$DirectDL.implOpen(DirectAudioDevice.java:513)
at com.sun.media.sound.AbstractDataLine.open(AbstractDataLine.java:121)
at com.sun.media.sound.AbstractDataLine.open(AbstractDataLine.java:153)
at com.mwn.audio.AudioDemo.getAudio_A(AudioDemo.java:42)
at com.mwn.audio.AudioDemo.main(AudioDemo.java:14)
javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 8000.0 Hz, 16 bit, mono, 2 bytes/frame, little-endian not supported.
at com.sun.media.sound.DirectAudioDevice$DirectDL.implOpen(DirectAudioDevice.java:513)
at com.sun.media.sound.AbstractDataLine.open(AbstractDataLine.java:121)
at com.sun.media.sound.AbstractDataLine.open(AbstractDataLine.java:153)
at com.mwn.audio.AudioDemo.getAudio_A(AudioDemo.java:42)
at com.mwn.audio.AudioDemo.main(AudioDemo.java:14)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/268148.html
標籤:Java相關
