我在我的 android 应用程序中接收到音频数据流(一个 channel ,16000Hz,170ms 缓冲区),我想播放这个音频。
我发现了AudioTrack但是当我播放声音时,我只会听到响亮而尴尬的声音。
到目前为止,我的代码如下所示:
AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 16000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, 128000, AudioTrack.MODE_STREAM);
audioTrack.play();
while (true) {
byte[] buf = new byte[32000];
inputStream.readFully(buf);
audioTrack.write(buf, 0, buf.length);
}
如何解决这个问题?
最佳答案
引用这个例子:buf size需要根据你的数据仔细计算,不一定是随机的32000。
int bufsize = AudioTrack.getMinBufferSize(
8000,
AudioFormat.CHANNEL_CONFIGURATION_STEREO,
AudioFormat.ENCODING_PCM_16BIT
);
AudioTrack trackplayer = new AudioTrack(
AudioManager.STREAM_MUSIC, 8000,
AudioFormat.CHANNEL_CONFIGURATION_ STEREO,
AudioFormat.ENCODING_PCM_16BIT,
bufsize,
AudioTrack.MODE_STREAM
);
trackplayer.play();
trackplayer.write(bytes_pkg, 0, bytes_pkg.length);
trackplayer.stop();
trackplayer.release();
关于java - 如何播放原始音频流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36751233/