这个问题可能不会被正确地问,但我保证你会尽我所能。这是场景:我写了一个小Java应用程序,它接收来自服务器的音频流。现在,当我将二进制流重定向到文件,并将该文件传递给mplayer时,音频正确播放。我现在想要的是从我自己的应用程序播放音频。这是我到目前为止所得到的:
编解码器mplayer用于播放流: 音频:22050Hz,2ch,s16le,0.0kbit / 0.00%(比率:0-> 88200) 选定的音频编解码器:[ffaac] afm:ffmpeg(FFmpeg AAC(MPEG-2 / MPEG-4音频))
到目前为止我编码的内容:
public class StreamPlayer {
public final AudioFormat audioFormat;
public final DataLine.Info info;
public final SourceDataLine soundLine;
public StreamPlayer() throws LineUnavailableException {
audioFormat = new AudioFormat(22050, 16, 2, true, true);
info = new DataLine.Info(SourceDataLine.class, audioFormat, 1500);
soundLine = (SourceDataLine) AudioSystem.getLine(info);
}
public void startSoundLine() throws LineUnavailableException {
soundLine.open(audioFormat);
soundLine.start();
}
public void playStream(byte[] buffer) {
soundLine.write(buffer, 0, buffer.length);
}
}
我为每个收到的数据包调用了playStream函数。没有报告错误,也没有听到声音。我甚至接近这样做,还是长时间拍摄?
P.S。我在谷歌上发现了一些第三方库,但我真的想把它们作为最后的手段。
谢谢!
答案 0 :(得分:0)
将Bytes放入ByteArrayInputStream并将其反馈到streamplayer中...... ByteArrayInputStream audioStream = new ByteArrayInputStream(buffer);