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


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

最佳答案

一旦从udp套接字读取数据。

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

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

关于java - 从Android中的套接字捕获RTP数据包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57098490/

10-12 03:33