我正在使用 RTP 流将 pcm (16kHz) 数据从远程服务器传输到 Android 设备。使用
audiotrack
似乎是播放 PCM 音频的正确方法。我只是在寻找一种从服务器捕获RTP数据包并可以将其写入audiotrack.write()
的方法。这就是我到目前为止所得到的。
int bufsize = AudioTrack.getMinBufferSize(16000,
AudioFormat.CHANNEL_OUT_STEREO,
AudioFormat.ENCODING_PCM_16BIT);
AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL,
16000,
AudioFormat.CHANNEL_OUT_STEREO,
AudioFormat.ENCODING_PCM_16BIT,
bufsize,
AudioTrack.MODE_STREAM);
audioTrack.play();
但是写入数据是我有点困惑的地方。如何从套接字提供传入的 RTP 数据包?
audioTrack.write(byte[], int, int);
我被困在这里了。我该如何解决这个问题?
一旦从 udp 套接字读取数据。
删除 12 字节 RTP 标头(rfc 3550),您将获得有效负载(PCM 数据),
您可以将pcm数据传递到音轨。