Android通过udp发送mpegts流

时间:2013-04-02 06:08:01

标签: android eclipse udp gstreamer

我想在我的Android应用程序中通过mpegts收到udp。我正在使用gstreamer。现在,我试图通过udp从同一台计算机发送来自vlc播放器的mpegts流。

在我的Android应用程序中,我给的是uri udp://10.0.2.2:1234 ,但是应用程序错误无法从/上获取/设置资源。我试图从互联网上获得解决方案,但到目前为止还没有运气。

1 个答案:

答案 0 :(得分:0)

1)UDP地址范围是224.0.0.0到239.255.255.255,所以你不能使用10.x.x.x

2)处理完地址后,请参阅this链接以处理程序化部分:

  

获取广播地址您需要访问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);