我想在我的 android 应用程序中mpegts
接收udp
。我正在使用gstreamer
它。现在,我正在尝试通过 udp 从同一台计算机的 vlc 播放器发送 mpegts 流。
在我的 android 应用程序中,我给出了 uri udp://10.0.2.2:1234但应用程序给出了错误Could not get/set settings from/on resource。我试图从互联网上获得解决方案,但到目前为止还没有运气。
1)UDP地址范围是224.0.0.0到239.255.255.255,所以不能使用10.xxx
2)处理完地址后,请参考此链接处理程序部分:
获取广播地址您需要访问 wifi 管理器以获取 DHCP 信息并从中构造广播地址:
InetAddress getBroadcastAddress() throws IOException {
WifiManager wifi = mContext.getSystemService(Context.WIFI_SERVICE);
DhcpInfo dhcp = wifi.getDhcpInfo();
// handle null somehow
int broadcast = (dhcp.ipAddress & dhcp.netmask) | ~dhcp.netmask;
byte[] quads = new byte[4];
for (int k = 0; k < 4; k++)
quads[k] = (byte) ((broadcast >> k * 8) & 0xFF);
return InetAddress.getByAddress(quads);
}
发送和接收 UDP 广播数据包构建好广播地址后,一切正常。以下代码将通过广播发送字符串数据,然后等待响应:
DatagramSocket socket = new DatagramSocket(PORT);
socket.setBroadcast(true);
DatagramPacket packet = new DatagramPacket(data.getBytes(), data.length(),
getBroadcastAddress(), DISCOVERY_PORT);
socket.send(packet);
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);