首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android通过udp发送mpegts流

Android通过udp发送mpegts流
EN

Stack Overflow用户
提问于 2013-04-02 06:08:00
回答 1查看 567关注 0票数 4

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

在我的android应用程序中,我给出了uri udp://10.0.2.2:1234,但是应用程序给出了错误无法从/on获取/设置设置。我试着从互联网上得到解决方案,但到目前为止还没有成功。

EN

回答 1

Stack Overflow用户

发布于 2013-06-11 05:45:40

1) UDP地址范围为224.0.0.0至239.255.255.255,因此不能使用10.x.x.x。

2)在处理完附件之后,请参阅链接来处理编程部分:

获取广播地址,您需要访问wifi管理器以获取DHCP信息并从中构造广播地址:

代码语言:javascript
复制
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广播数据包已经构造了广播地址,一切正常工作。以下代码将通过广播发送字符串数据,然后等待响应:

代码语言:javascript
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15757270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档