2013-04-02 124 views
4

我想在我的android應用程序中通過udp接收mpegts。我正在使用gstreamer。現在,我試圖通過udp從同一臺計算機發送來自vlc播放器的mpegts流。Android通過udp發送mpegts流

在我的Android應用程序,我給的URI UDP://10.0.2.2:1234但應用程序提供了錯誤資源無法獲取/從/集的設置。我試圖從互聯網上獲得解決方案,但目前還沒有運氣。

+0

請幫助,如果任何人有這方面的任何絲毫的想法。 – Ruchi

+0

發現我可能會給udp格式錯誤。但沒有得到正確的答案。任何人都可以請幫忙嗎? – Ruchi

+0

我已經使用udp開始了我的一個項目(我不是100%確定,但是從我的個人記憶中)低於2.3,UDP在各處都不起作用。然後我注意到我的一些設備來發送UDP數據包基地,而另一個需要WiFi鎖定。 我希望它可以幫助你 – letroll

回答

0

1)UDP地址範圍從224.0.0.0到239.255.255.255,所以你不能使用10.xxx

2)後你處理不會忽略,請參閱this鏈接處理程序部分:

獲取廣播地址您需要訪問無線經理來把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);