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

时间:2019-07-18 15:56:29

标签: java android rtp

我正在使用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();

但是写数据是我很困惑的地方。我该如何从套接字输入传入的rtp数据包。

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

我被困在这里,正在寻找一些处理方法的指南?任何类型的材料都将是有帮助的。谢谢。

1 个答案:

答案 0 :(得分:0)

从udp套接字读取数据后。

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

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