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

问题描述 投票:0回答:1

我正在使用 RTP 流将 pcm (16kHz) 数据从远程服务器传输到 Android 设备。使用

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);

我被困在这里了。我该如何解决这个问题?

java android rtp
1个回答
1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.