gpt4 book ai didi

Android 从 VLC/ffmpeg 接收 RTP/UDP 音频流

转载 作者:太空宇宙 更新时间:2023-11-03 13:19:28 24 4
gpt4 key购买 nike

我找了半天的好答案,但我是这方面的初学者,如果有任何帮助,我将不胜感激。

我想要实现的是在 ffmpeg 或 vlc 中流式传输音频(mp3 文件)并通过 udp/rtp 在 Android 设备上接收它。

到目前为止,这是我自己能够弄清楚的:

1) 有Android类AudioStream和RTPStream。我不知道的是如何使用它。例如,我通过 ffmpeg 创建一个流:ffmpeg -re -i mymp3.mp3 -ar 8000 -acodec copy -f rtp rtp://192.168.0.100:5533,其中 192.168。 0.100 是我的 Android 设备的地址。现在我想收到它并播放它。

我在 Stack 上发现了这样的东西:

AudioStream audioStream;
AudioGroup audioGroup;
AudioCodec codec = AudioCodec.PCMU;
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_NORMAL);
InetAddress inetAddress;
try {
inetAddress = InetAddress.getByName("163.11.62.208");
audioStream = new AudioStream(inetAddress);
audioStream.setMode(RtpStream.MODE_RECEIVE_ONLY);
audioStream.setCodec(codec);
InetAddress inetAddressRemote = InetAddress.getByName("163.11.169.206");
audioStream.associate(inetAddressRemote, 5004);
audioStream.join(audioGroup);
}

第一个 inetAddress 163.11.62.208 和第二个 163.11.169.206 是什么?我不应该只给出一个流的地址吗?

2) 我可以只提交 PCMU 格式的流吗?我可以流式传输 mp3 文件吗?

3) 有可能吗?

最佳答案

我已经实现了 Cisco Jabber 与我们的服务器和 Android 的集成,并且有类似的设置。

audioStream = new AudioStream(inetAddress)

inetAddress(163.11.62.208) 是该 android 设备的本地网络地址。我们使用以下方法获取它:

WifiManager wifiMgr = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
int ip = wifiInfo.getIpAddress();
String ipAddress = Formatter.formatIpAddress(ip);
Log.w(TAG, "ipAddress=" + ipAddress);
inetAddress = InetAddress.getByName(ipAddress);

可能还有其他方法,我不是 Android 开发人员。

audioStream.associate(inetAddressRemote, 5004)

inetAddressRemote(163.11.169.206) 是您将从中向 Android 发送音频的服务器的远程地址。

5004 是在 Android 和服务器端发送和接收音频的端口。现在有一个问题 - 确保您将音频从服务器发送到 Android 的本地端口也是 5004。例如测试音频流:

ffmpeg -re -f lavfi -i aevalsrc="sin(400*2*PI*t)" -map 0:0  -c:a pcm_mulaw -b:a 64k -ar 8000 -f rtp rtp://163.11.62.208:5004?localrtpport=5004

关于Android 从 VLC/ffmpeg 接收 RTP/UDP 音频流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30728889/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com