- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我想收听 RTP 音频流,但声音中的间隙很小 - 不能继续。可能是什么解决方案?我是否在 Receiver(android) 端或 Streamer(ffmpeg) 端遗漏了什么?
我正在使用 ffmpeg 流式传输 RTP 音频,
ffmpeg -f lavfi -i aevalsrc="sin(400*2*PI*t)" -ar 8000 -vcodec pcm_u8 -f rtp rtp://192.168.0.15:41954 (port changes.)
这是我相关的android代码:
AudioStream audioStream;
AudioGroup audioGroup;
@Override
public void onStart() {
super.onStart();
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitNetwork().build();
StrictMode.setThreadPolicy(policy);
AudioManager audio = (AudioManager)getSystemService(AUDIO_SERVICE);
audio.setMode(AudioManager.MODE_IN_COMMUNICATION);
audioGroup = new AudioGroup();
audioGroup.setMode(AudioGroup.MODE_ECHO_SUPPRESSION);
InetAddress inetAddress;
try {
inetAddress = InetAddress.getByName("192.168.0.15");
audioStream = new AudioStream(inetAddress);
audioStream.setCodec(AudioCodec.PCMU);
audioStream.setMode(RtpStream.MODE_NORMAL);
InetAddress inetAddressRemote = InetAddress.getByName("192.168.0.14");
audioStream.associate(inetAddressRemote, 6000);
((TextView)findViewById(R.id.tv_port)).setText("Port : " + String.valueOf(audioStream.getLocalPort()));
audioStream.join(audioGroup);
}
catch ( UnknownHostException e ) {
e.printStackTrace();
}
catch ( SocketException e ) {
e.printStackTrace();
}
}
最佳答案
回答我自己的问题,问题在于 android rtp 数据包管理。
Android 说 ... 假设数据包间隔为 50 毫秒或更短。
在 AudioGroup source file 中.
但是,RTP 数据包以 60 毫秒的间隔发送。
这意味着 50 毫秒是不够的,这会导致如下所述的问题。
Incoming: X X X X X X Y Y Y Y Y Y X X X X X X Y Y Y Y Y Y X X X X X X
Reading : X X X X X Y Y Y Y Y X X X X X Y Y Y Y Y X X X X X Y Y Y Y Y
^ ^ ^ ^ ^ - - - - - - - - - - - - - - - - - - - - ^ ^ ^ ^ ^
^ ^
| |
|---- just these overlapping packets is valid ----|
|---- and other packets discarding due to --------|
|---- invalid RTP headers. -----------------------|
X, Y < packets
我每 300 毫秒间隔只有一个数据包。这会产生抖动的声音。
我会为此发送一个错误报告,希望它对某人有所帮助。
对于真正想收听原始RTP流的人,我建议他们手动读取数据包并将其解码为PCM 16bit(这是android声卡支持的唯一音频格式)并将其写入AudioTrack。
关于android - 接收 RTP 流 - AudioStream, AudioGroup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27268928/
在最近的工作中,我使用 Matt Gallagher 的 AudioStreamer ( downloaded from here) 代码在我的应用程序中制作音乐播放器。 我托管的远程服务器中有一个
因此,我试图做的是使我的应用程序使用.wav音乐文件在后台播放音乐。 我有此代码,但在以下位置找不到AudioStream sun.audio.*; 如果您使用过Eclipse IDE,您将如何找到A
我正在研究 Kivy 的 Audiostream 包的一些基础知识。 我想制作一个简单的在线输入-过滤-输出系统,例如,接收麦克风数据,施加带通滤波器,发送到扬声器。 但是,我似乎无法弄清楚麦克风输入
我下载了代码 DigitalDJ/AudioStreamer 以在我正在做的播放器中使用,这是我下载的项目:https://github.com/DigitalDJ/AudioStreamer 在我决
我有一个 ios 应用程序通过流媒体播放音乐并使用 mattgallagher AudioStreamer 库它不显示真实的播放时间并且从不在 0 秒停止播放... 有人知道为什么会这样吗? 非常感谢
我正在使用 Matt Gallagher AudioStreamer 在应用程序中执行音频流,URL 来自服务器,目前其类型.m3u8 格式,并且在它是 .mp3 类型并正常传输之前,问题就出现了。它
我用 radio 选项快速创建了一个应用程序,我想获取艺术家标题等元数据...所以我从 Mike Jablonski 项目导入 2 个文件(audioStreamer.m 和 audioStreame
我正在尝试通过 android 中的套接字进行音频流传输。我在客户端使用 AudioRecord 获取录制的音频,在服务器端使用 AudioTrack 类播放原始数据。但我做不到。是否有任何其他程序可
我目前正在使用 Matt Gallagher 的 AudioStreamer(效果很好!)但是当我尝试停止播放并完全移除流媒体时,我的录音失败了。在我第一次开始使用流光后,无论如何我都无法录制任何东西
当我在我的应用程序中收到一条消息时,我正在尝试提供自定义蜂鸣声。此哔声应符合主电话通知音量级别(不是铃声音量)。这意味着如果电话通知 vol =3/10 ,则蜂鸣强度应为 3/10。我无法做到这一点,
我使用 Matt Galagher 的 AudioStreamer http://github.com/mattgallagher/AudioStreamer/它工作正常,但是如何在 iPhone O
我正在使用 AudioStreamer,一切正常,除了当我在蜂窝网络和 WiFi 网络之间切换时除外。它立即停止。 我通过关闭 wifi 网络在不离开应用程序的情况下对其进行了测试,因此我可以证明问题
我正在使用 MediaInfo.dll 和 Wrapper-Class 来检查音频编解码器的视频文件。 谁能告诉我如何检查文件的音频流数量? string pfad = Console.ReadLin
我有一个目标,即从 WebRTC 转换现有的 AudioStream。因此,我想将来自另一个应用程序的自定义噪音(仅用于示例)添加到已经工作的 PeerConnection 和本地流中。我的目标是为
我正在尝试实现 Matt Gallagher 的 AudioStreamer类,我在 Audiostream.m 文件上收到 20 多个错误,这些错误基本上是在读取: C 指针类型“void *”到
我已经使用 CSCore 库从我的程序中过滤了所有音频流。它工作正常,但我不知道哪个流属于哪个进程。有没有办法获取每个流的 processId 或 processname? 我的代码: public
我最近读了很多书,但也不乏,我正在尝试为 unity Audio 添加镶边、童声、Monster 等效果。我研究过文档,但找不到任何好的例子。我对音频编程和 C# 比较陌生,请帮助我。 最佳答案 这是
我想收听 RTP 音频流,但声音中的间隙很小 - 不能继续。可能是什么解决方案?我是否在 Receiver(android) 端或 Streamer(ffmpeg) 端遗漏了什么? 我正在使用 ffm
我正在使用 Matt Gallagher 出色的 AudioStreamer 示例通过 AudioSession 播放音频文件。一切正常,除了在我的 iPhone 4 上,我从底部扬声器而不是耳机扬声
我正在使用Matt Gallagher's AudioStreamer通过 HTTP 播放 MP3。我需要知道歌曲的时长和 ID3 标签。 是否可以在 AudioStreamer 中实现此功能,以及如
我是一名优秀的程序员,十分优秀!