从 android 中的套接字捕获 RTP 数据包

Capturing RTP packets from sockets in android

我正在使用 rtp streampcm(16kHz) 数据从远程服务器流式传输到 android 设备。使用 audiotrack 似乎是玩 pcm audio 的正确方法。我只是在寻找一种从服务器捕获 rtp packets 并将其写入 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();

但是写入数据是我有点困惑的地方about.How我可以从套接字提供传入的 rtp 数据包吗?

audioTrack.write(byte[], int, int);

我被困在这里并正在寻找一些关于如何处理它的指导?任何类型的 material 继续前进都会有所帮助。谢谢。

从 udp 套接字读取数据后。

删除 12 字节 RTP header (rfc 3550),您将获得有效负载(PCM 数据),

您可以将 pcm 数据传递给音轨。