使用android.net.rtp

使用android.net.rtp,第1张

概述我正在尝试使用 android.net.rtp api在我的平板电脑上传输音频rtp数据包. 在收到数据包之前,我想测试一下android.net.rtp.AudioGroup >我正在MODE SEND_ONLY中创建一个AudioStream. >在MODE_ECHO_SUPPRESSION中创建一个AudioGroup >然后音频流加入Audiogroup. AudioGroup不能从麦克风 我正在尝试使用 android.net.rtp API在我的平板电脑上传输音频rtp数据包.
在收到数据包之前,我想测试一下androID.net.rtp.AudioGroup

>我正在MODE SEND_ONLY中创建一个AudioStream.
>在MODE_ECHO_SUPPRESSION中创建一个AudioGroup
>然后音频流加入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,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,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

任何指针都将非常感激.

解决方法 你交换了字节[]的顺序吗?它应该是:new byte [] {b1,b2,b3,b4}对吗?
我希望这有帮助.我也想为androID创建一个rtp客户端.

private InetAddress createInet(int b1,int b4) {InetAddress addr = null;try {     addr = InetAddress.getByAddress(new byte[] {(byte)b1,(byte)b3    });}
总结

以上是内存溢出为你收集整理的使用android.net.rtp全部内容,希望文章能够帮你解决使用android.net.rtp所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1126535.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存