java - 从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);
我被困在这里并寻找有关如何处理它的一些指导?继续推进的任何类型的材料都会有所帮助。谢谢你。
解决方案
从 udp 套接字读取数据后。
去掉 12 Bytes RTP header (rfc 3550),你会得到payload(PCM数据),
您可以将 pcm 数据传递到音轨。
推荐阅读
- angular - 类型错误:无法添加属性 1,对象不可扩展↵ 在 Array.push (
) - java - OpenShift Payara 内存 - 无法访问管理员
- python - 如何修复 cmake 错误:无法将可执行文件输出到 COPY_FILE 指定的输出文件
- intellij-idea - 在 IntelliJ 的被调用者层次结构中选择
- android - 标记在谷歌地图上显示错误的位置
- c# - 如何从 MVC 控制器返回本地化文本
- javascript - JSON.parse(myArray) 失败
- php - 如何使用 PHP/MySQL 限制用户在一个月内仅上传三张图片
- angular - 如何在角度应用程序中将 dir='rtl' 添加到 html 标记
- javascript - 如何在 reactJS 中键入定义?