首页 > 解决方案 > 从android中的套接字捕获RTP数据包

问题描述

我正在使用将数据从远程服务器rtp stream流式传输到 android 设备。pcm(16kHz)使用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);

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

标签: javaandroidrtp

解决方案


从 udp 套接字读取数据后。

去掉 12 Bytes RTP header (rfc 3550),你会得到payload(PCM数据),

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


推荐阅读