转换G.711-ALAW编码-Java
我正在尝试转换通过UDP编码的G.711 ALAW格式接收的音频流,以便在计算机的扬声器上播放。我正在从服务器接收音频流 服务器编码规范如下所示:转换G.711-ALAW编码-Java,java,audio,encoding,g.711,Java,Audio,Encoding,G.711,我正在尝试转换通过UDP编码的G.711 ALAW格式接收的音频流,以便在计算机的扬声器上播放。我正在从服务器接收音频流 服务器编码规范如下所示: “采样率应始终为8 kHz,每个RTP数据包中应有一个30 ms的8位G.711 A-Law PCM编码音频通道。” G.711 A-法律 每包样本:240 有效负载大小:240字节 音频毫秒数:30毫秒 数据包间隔:30毫秒 我能够接收音频流并在我的扬声器上播放,但我唯一能听到的是由于编码产生的白噪声。 任何帮助都将不胜感激 public st
- “采样率应始终为8 kHz,每个RTP数据包中应有一个30 ms的8位G.711 A-Law PCM编码音频通道。”
- G.711 A-法律
- 每包样本:240
- 有效负载大小:240字节
- 音频毫秒数:30毫秒
- 数据包间隔:30毫秒
public static void main(String[] args) throws LineUnavailableException {
AudioFormat speakersFormat = new AudioFormat(44100, 16, 1, true, false);
SourceDataLine speakers;
DataLine.Info dataLineInfo = new DataLine.Info(SourceDataLine.class, speakersFormat);
speakers = (SourceDataLine) AudioSystem.getLine(dataLineInfo);
speakers.open(speakersFormat);
speakers.start();
int port = 58301;
try {
DatagramSocket serverSocket = new DatagramSocket(port);
while (true) {
byte[] buffer = new byte[240];
DatagramPacket response = new DatagramPacket(buffer, buffer.length);
serverSocket.receive(response);
speakers.write(response.getData(), 0, response.getData().length);
}
} catch (SocketTimeoutException ex) {
System.out.println("Timeout error: " + ex.getMessage());
ex.printStackTrace();
} catch (IOException ex) {
System.out.println("Client error: " + ex.getMessage());
ex.printStackTrace();
}
}