通常の DatagramSocket は正常に動作します... ICE4J DatagramSocket はデータを切り捨てるようです!?
送信サイズのパケットは 2,500 ですが、受信側は常に 1500 です (通常の Java DatagramSocket では、受信パケット サイズは送信サイズと同じです)。
受信終了:
Component rtpComponent = stream.getComponent(org.ice4j.ice.Component.RTCP);
CandidatePair rtpPair = rtpComponent.getSelectedPair();
videoDS = rtpPair.getDatagramSocket();
スレッド内:
byte[] buffer = new byte[250000000];
final DatagramPacket dp = new DatagramPacket(buffer, buffer.length);
videoDS.receive(dp);
final byte[] clone = new byte[dp.getLength()];
System.arraycopy(dp.getData(), dp.getOffset(), clone, 0, dp.getLength());
final Image image = new Image(new ByteArrayInputStream(clone));
送信側は、Android 上で実行されることを除いて、ほとんど同じです...
非動作コードの唯一の違いは、最初の段落が送信と受信に使用されることです。通常の Java Socket を使用すると動作します (ただし、もちろんルーターの背後にはありません。そのため、Ice4J を使用しています)。