我正在尝试在台式机和安卓智能手机之间建立rtp连接。

我使用gstreamer抓取数据。
由于在同一系统中同时使用此麦克风的其他应用程序,因此存在一个tcpsink,其中发布了数据。

这是通过此调用完成的:

gst-launch-0.10 -v alsasrc ! 'audio/x-raw-int, depth=16, width=16, \
             endianness=1234, channels=1, rate=16000' ! \
             tcpserversink host=localhost port=20000


然后创建第二个流,该流将抓取tcp连接并将其转换为rtp流以通过udp发布数据

gst-launch-0.10 tcpclientsrc host=localhost protocol=0 port=20000 ! \
             audio/x-raw-int,depth=16, width=16,endianness=1234, channels=1,\
             rate=16000 ! lamemp3enc target=1 bitrate=64 cbr=true ! mad ! \
             audioconvert ! audioresample ! mulawenc ! rtppcmupay pt=96 ! \
             udpsink host=129.70.134.128 port=6000


这在本地主机上播放vlc Player时起作用

vlc rtp://129.70.134.128:6000


现在,我将udpsink中的主机更改为android的手机之一。在使用mplayer应用程序播放时,这也可以做到。

之后,最后一步应该是使用我自己的应用程序播放声音。

我正在尝试使用android.net.rtp类获取流。

AudioManager audioManager = (AudioManager);
mContext.getSystemService(mContext.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
AudioStream inRtpStream = new AudioStream(createInet("127.0.0.1"));

inRtpStream.associate(createInet(url), 6000);
inRtpStream.setMode(RtpStream.MODE_RECEIVE_ONLY);
inRtpStream.setCodec(AudioCodec.PCMU);
inRtpStream.setDtmfType(96);
// Initialize an AudioGroup and attach an AudioStream
AudioGroup main_grp = new AudioGroup();
main_grp.setMode(AudioGroup.MODE_NORMAL);
inRtpStream.join(main_grp);


但是有寂静。
日志输出使我认为应用程序正在尝试播放某种数据。

DEBUG   AudioGroup  stream[57] is configured as PCMU 8kHz 20ms mode 2
DEBUG   AudioGroup  stream[64] is configured as RAW 8kHz 32ms mode 0
DEBUG   AudioGroup  stream[64] joins group[63]
DEBUG   AudioGroup  group[63] switches from mode 0 to 2
DEBUG   AudioGroup  stream[57] joins group[63]
DEBUG   AudioGroup  reported frame count: output 1149, input 384
DEBUG   AudioGroup  adjusted frame count: output 1149, input 512
DEBUG   AudioGroup  latency: output 302, input 64


我缺少启动流或打开扬声器的功能吗?

所有可用的音量滑块都调到最大。我还请求了清单文件中的INTERNET和RECORD_AUDIO权限。

编解码器也应该相同。

谢谢你的回答

最佳答案

您应该传入实际IP地址,并且不要在“ new AudioStream(createInet(“ 127.0.0.1”));“中回送地址127.0.0.1。

关于java - 在使用gstreamer发布的android上播放rtp流,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18616406/

10-10 17:51
查看更多