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

Java 在android中从套接字捕获RTP数据包,java,android,rtp,Java,Android,Rtp,我正在使用rtp-stream将pcm(16kHz)数据从远程服务器传输到安卓设备。使用audiotrack似乎是播放pcm音频的正确方法。我只是在寻找一种从服务器捕获rtp数据包的方法,并可以将其写入audiotrack.write()。这就是我目前所得到的 int bufsize = AudioTrack.getMinBufferSize(16000, AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_16BIT); Audi

我正在使用
rtp-stream
pcm(16kHz)
数据从远程服务器传输到安卓设备。使用
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数据传送到音频曲目。

您有任何例子吗?这对我理解会更有帮助。我也可以实现它。你可以检查任何开源代码。(pjmedia/pjsip或gstreamer rtp插件或ffmpeg rtp)