これは約6か月遅れていますが、同じ問題を解決しようとしているときにこのスレッドを見つけました。これが私が見つけたものです:
また、SessionAddress オブジェクトを作成するときに ttl 値を設定しようとしましたが、wireshark を使用すると、パケットの ttl はまだ 1 しかありませんでした。ただし、初期化とターゲットに異なるアドレスを使用していましたが、同じアドレスを使用すると ttl 設定が機能しました。したがって、次のような 2 つの SessionAddress オブジェクトがある場合
String addr = "239.192.1.1";
int port = 22224;
int ttl = 32;
SessionAddress multiAddress =
new SessionAddress(InetAddress.getByName(addr), port, ttl);
SessionAddress localAddress =
new SessionAddress(InetAddress.getLocalHost(), SessionAddress.ANY_PORT, ttl);
SessionAddress multiAny =
new SessionAddress(InetAddress.getByName(addr), port, ttl);
次に、次のようにアドレスを使用する必要があります。
良い
RTPManager rtpManager = RTPManager.newInstance();
rtpManager.initialize(multiAddress);
rtpManager.addTarget(multiAddress);
良い
RTPManager rtpManager = RTPManager.newInstance();
rtpManager.initialize(multiAny);
rtpManager.addTarget(multiAddress);
悪い
RTPManager rtpManager = RTPManager.newInstance();
rtpManager.initialize(localAddress);
rtpManager.addTarget(multiAddress);
編集: initialize() に渡された SessionAddress だけが ttl を設定する必要があるようです