- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 android.net.rtp 在我的平板电脑上传输音频 rtp 数据包接口(interface)。在接收数据包之前,我想测试一下 android.net.rtp.AudioGroup
AudioGroup 不应该从麦克风接收,在扬声器上播放吗?我不关心它发送数据包。我只想通过音频组中的扬声器功能测试麦克风录音和播放。
在 MANIFEST 中,我确实设置了使用 Internet、Record_Audio、modify_audio_settings(用于 mode_in_communication)的权限
代码如下。 打包 rtp.stream;
import android.app.Activity;
import android.os.Bundle;
import android.media.AudioManager;
import android.net.rtp.*;
import android.util.Log;
import java.net.*;
public class Rtpstream3_2 extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// AudioManager
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
// Initialize AudioStream and set codec
AudioStream inRtpStream = null;
try {
inRtpStream = new AudioStream(createInet(127, 0, 0, 1));
} catch (SocketException e) {
Log.d("Quit", "Socket Error");
System.exit(1);
}
inRtpStream.setMode(RtpStream.MODE_SEND_ONLY);
inRtpStream.setCodec(AudioCodec.PCMU);
inRtpStream.associate(createInet(10,2,0,165), 17222);
// Initialize an AudioGroup and attach an AudioStream
AudioGroup main_grp = new AudioGroup();
main_grp.setMode(AudioGroup.MODE_ECHO_SUPPRESSION);
inRtpStream.join(main_grp);
Log.d("Log"," Group joined"+inRtpStream.getLocalPort());
}
private InetAddress createInet(int b1, int b2, int b3, int b4) {
InetAddress addr = null;
try {
addr = InetAddress.getByAddress(new byte[] {(byte)b1, (byte)b2,
(byte)b4, (byte)b3
});
}
catch (UnknownHostException e) {
Log.d("Error", "Cannot create Inet address");
System.exit(1);
}
return addr;
}
}
当我在运行 Android 3.2 版本的平板电脑上运行此程序时,我根本听不到自己的声音。我在 logcat 中看到一条错误消息,告诉我 AudioGroup 无法从 AudioRecord(mic) 中读取。就在这之前,我看到一条来自 AudioPolicyManager 的消息,它说输入已经开始。但目前没有其他应用程序使用麦克风。
有人以前见过类似的东西吗?任何想法都将不胜感激。
下面是日志的摘录。
03-15 20:06:00.820: I/AudioService(286): AudioFocus requestAudioFocus() from AudioFocus_For_Phone_Ring_And_Calls
03-15 20:06:00.820: D/AudioHardwareMot(6337): setMode(IN_COMMUNICATION)
03-15 20:06:00.820: D/AudioHardwareMot(6337): Putting streams to standby
03-15 20:06:00.820: D/AudioHardwareMot(6337): AudioStreamOutMot::standby called
03-15 20:06:00.820: D/AudioHardwareMot(6337): Input 0x849f8 entering standby
03-15 20:06:00.820: D/AcousticsModule(6337): Acoustics close stub called.
03-15 20:06:00.820: D/AudioHardwareMot(6337): setMode(): mode is MODE_IN_COMMUNICATION. Calling enableecns
03-15 20:06:00.820: D/AudioPostProcessor(6337): Reading ecns param file from /system/bin
03-15 20:06:00.820: D/AudioPostProcessor(6337): enableEcns() called: found param file. mEcnsEnabled value =0
03-15 20:06:00.820: D/AudioPostProcessor(6337): enableEcns(true)
03-15 20:06:00.820: **D/AudioHardwareInterface(6337): setMode(IN_COMMUNICATION)**
03-15 20:06:00.820: D/AudioHardwareMot(6337): setMode END
03-15 20:06:00.820: D/AudioHardwareMot(6337): Capture session will read from ECNS thread
03-15 20:06:00.820: D/AudioHardwareMot(6337): AudioStreamOutMot::setParameters() routing=8
**03-15 20:06:00.820: D/AudioHardwareMot(6337): Entering doALSAInputRouting
03-15 20:06:00.820: D/AudioHardwareMot(6337): Enter doALSAOutputRouting**
03-15 20:06:00.828: D/AudioHardwareMot(6337): Output gain set
03-15 20:06:00.828: D/AudioHardwareMot(6337): doRouting(): Calling mapaccy with accy 9, mNrec 1
03-15 20:06:00.828: D/AudioHardwareMot(6337): doRouting devs: stereo 0, mono 0, input 0. Chose speaker None (gain 0xb) mic None (gain 0x1c1c)
03-15 20:06:00.828: I/dalvikvm(7385): threadid=1: recursive native library load attempt (/system/lib/librtp_jni.so)
**03-15 20:06:00.835: D/AudioGroup(7385): stream[38] is configured as PCMU 8kHz 20ms mode 1
03-15 20:06:00.835: D/AudioGroup(7385): stream[42] is configured as RAW 8kHz 32ms mode 0
03-15 20:06:00.835: D/AudioGroup(7385): stream[42] joins group[41]
03-15 20:06:00.835: D/AudioGroup(7385): group[41] switches from mode 0 to 3
03-15 20:06:00.835: D/AudioGroup(7385): stream[38] joins group[41]**
03-15 20:06:00.835: D/Log(7385): Group joined55442
03-15 20:06:00.835: D/AudioHardwareMot(6337): Output latency, using cached value = 99
03-15 20:06:00.835: D/AudioGroup(7385): reported frame count: output 789, input 800
03-15 20:06:00.835: D/AudioGroup(7385): adjusted frame count: output 789, input 800
03-15 20:06:00.835: D/AudioHardwareMot(6337): Output latency, using cached value = 99
03-15 20:06:00.843: D/AudioHardwareMot(6337): Output latency, using cached value = 99
03-15 20:06:00.843: D/AudioHardwareMot(6337): AudioHardwareMot::openInputStream enter
03-15 20:06:00.843: D/AudioHardwareMot(6337): AudioStreamInMot::set(0xf9e8, 40000, 1, 10, 8000)
03-15 20:06:00.843: D/Omap4ALSA(6337): open called for devices 00040000 in mode 3...
03-15 20:06:00.851: I/gralloc(416): Unregistered ID: 10 handle: 0x92a7b0 size: 1280 x 800 fmt: 5 usage: 0x1300
03-15 20:06:00.851: D/Omap4ALSA(6337): setCodecDefaultControls
03-15 20:06:00.851: I/Omap4ALSA(6337): **Initialized ALSA CAPTURE device hw:0,1**
03-15 20:06:00.851: D/AcousticsModule(6337): Acoustics set_params stub called with 0.
03-15 20:06:00.851: D/AcousticsModule(6337): Acoustics close stub called.
03-15 20:06:00.851: I/gralloc(416): Unregistered ID: 9 handle: 0x94f0e8 size: 1280 x 800 fmt: 5 usage: 0x1300
03-15 20:06:00.851: D/AudioPostProcessor(6337): **Disabling beamformer due to unsupported sample rate**
03-15 20:06:00.851: D/AudioHardwareMot(6337): Input bufSize from ALSA = 352
03-15 20:06:00.851: D/AudioHardwareMot(6337): Output latency, using cached value = 99
03-15 20:06:00.859: D/AudioGroup(7385): latency: output 197, input 100
03-15 20:06:00.859: W/AudioPolicyManagerBase(6337): startInput() input 1559 failed: other input already started
03-15 20:06:00.882: E/AudioGroup(7385): **cannot read from AudioRecord**
03-15 20:06:00.902: W/AudioPolicyManagerBase(89): startInput() input 10711 failed: other input already started
如有任何指点,我们将不胜感激。
最佳答案
你是否交换了 byte[]
的顺序?它应该是:new byte[] {b1, b2, b3, b4}
对吧?我希望这有帮助。我也在尝试为 android 制作一个 rtp 客户端。
private InetAddress createInet(int b1, int b2, int b3, int b4) {
InetAddress addr = null;
try {
addr = InetAddress.getByAddress(new byte[] {(byte)b1, (byte)b2, (byte)b4, (byte)b3
});
}
关于android - 使用 android.net.rtp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9728275/
我正在尝试从 RTP URL 流式传输 RTP 数据包(正在流式传输音频),例如rtp://@225.0.0.0经过如此多的研究后,我在我的设备中流式传输了 URL 并使用 https://githu
如果客户端想要观看我的 RTSP 服务器上的流,它首先尝试通过 UDP 协议(protocol)设置流。我如何告诉它我的服务器只支持 RTP/AVP/TCP 并且它应该切换传输? 我想终止我服务器上的
我需要在 RTP 数据包中检测 MPEG4 I-Frame。我知道如何删除 RTP header 并在其中获取 MPEG4 帧,但我不知道如何识别 I 帧。 它有特定的签名/标题吗? 最佳答案 好的,
我是 VoIP 新手。我想创建一个使用 RTP 使用客户端/服务器架构流式传输音频的应用程序。可以使用不同的 API,但我需要在核心级别上进行理解。我研究过RFC。任何人都可以建议我如何制作一个音频
我像这样通过 ffmpeg 开始视频传输: ffmpeg -f video4linux2 -i /dev/video0 -vcodec libx264 -preset ultrafast -crf 2
我正在尝试通过 ffserver 从 usbcam 和 mic throw ffmpeg 流式传输视频和音频 我有 2 个错误: - ffmpeg 似乎运行正常,但显示“数据看起来不像 RTP 数据包
来自 Mozilla 网站:https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API “一个 MediaStream 由零个
几天来,我已经在寻找如何将 MJPEG rtp 流转换为 MP4 rtp 流的解决方案。 已经尝试过这样的事情: ffmpeg -i rtsp://192.168.10.8:554/stream1/m
我一直在试图找出一种计算以下内容的方法: 带宽、延迟、当前上传和下载速度 . 并且对我为 INBOUND-RTP、OUTBOUND-RTP 和 REMOTE-INBOUND-RTP 获得的值感到困惑。
我需要将一个 .rtp 文件(已使用 RTP 代理录制)转换为 .wav 文件。如果有人知道如何做到这一点,请给我您的解决方案。 提前致谢:) 最佳答案 聚会可能有点晚了,但我最近遇到了同样的问题,我
我正在使用 ffmpeg libavformat 库编写仅视频的 webm 文件。我在我的服务器上收到了 VP8 编码的 rtp 流。我已经成功地将 rtp 字节流(来自 rtp 有效负载)分组到单独
我正在尝试通过 RTP 多播流式传输 .wav 音频文件。我正在使用以下命令: ffmpeg -re -i Melody_file.wav -f rtp rtp://224.0.1.211:5001
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
我有一个要发送到机顶盒的 RTP 视频流。不幸的是,机顶盒不支持 RTP,我已将其转换为 Smooth Streaming。 我尝试过使用 Wowza Media Server 进行流转换,但没有成功
我试图弄清楚哪个是 RTP 数据包的最大大小。我知道最小 header 大小为 12 个字节,但我没有找到任何有关有效负载的信息。 RTP 数据包的最大大小可能与 UDP 有效负载的最大大小相同吗?我
我们有捕获的 pcap 文件,其中包含每个 rfc6716 的 RTP opus 有效负载,现在我们可以切断 RTP header 并提取 opus 有效负载,我们希望根据规范将有效负载封装到 ogg
我正在尝试通过RTP将AAC音频流传输到Wowza服务器。我设法使其正常工作,但交替听到的声音非常快,然后出现1s的空白。采样率是22050,每个数据包的帧数是1024。 目前,我的时间戳是这样生成的
我正在尝试在我的 iPhone 中接收实时 RTP 音频流,但我不知道如何开始。我正在寻找一些 sample ,但我在任何地方都找不到它们。 我有一个 Windows 桌面应用程序,它从选定的音频接口
我正在尝试用 C 语言构建一个 RTP 数据包度量分析器,但最终遇到了一个奇怪的问题,我正在削减实现细节以便于公开: 由于 RTP 数据包包含在 UDP 中,因此我的套接字使用以下参数进行初始化: s
我有一个客户端和一个服务器,服务器通过封装在 UDP 内的 RTP 数据包发送音频数据。客户端接收数据包。由于 UDP 没有流量控制,客户端会检查数据包的序列号,如果序列号不正确,则重新排列它们。我的
我是一名优秀的程序员,十分优秀!