4

Androidアプリでmpegts受け取りたいです。udpそのために使っgstreamerています。現在、同じコンピューターの vlc プレーヤーから mpegts ストリームを udp 経由で送信しようとしています。

私のAndroidアプリケーションでは、uri udp://10.0.2.2:1234を指定していますが、アプリケーションはエラーCould not get/set settings from/on resource を返します。私はインターネットから解決策を得ようとしましたが、今のところうまくいきません。

4

1 に答える 1

0

1) UDP アドレスの範囲は 224.0.0.0 から 239.255.255.255 であるため、10.xxx は使用できません。

2) アドレスを処理した後、このリンクを参照してプログラム部分を処理します。

ブロードキャスト アドレスの取得 Wi-Fi マネージャーにアクセスして 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);
于 2013-06-11T05:45:40.290 に答える