Это примерно на шесть месяцев позже, но я нашел эту ветку, пытаясь решить ту же проблему, вот что я нашел:
Я также пытался установить значение ttl при создании объектов SessionAddress, но при использовании wireshark пакеты все еще имели ttl 1. Однако я использовал разные адреса для инициализации и назначения, но настройка ttl работала, когда я использовал тот же адрес. Поэтому, если у вас есть два объекта 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);
Тогда вы должны использовать адреса следующим образом:
GOOD
RTPManager rtpManager = RTPManager.newInstance();
rtpManager.initialize(multiAddress);
rtpManager.addTarget(multiAddress);
GOOD
RTPManager rtpManager = RTPManager.newInstance();
rtpManager.initialize(multiAny);
rtpManager.addTarget(multiAddress);
BAD
RTPManager rtpManager = RTPManager.newInstance();
rtpManager.initialize(localAddress);
rtpManager.addTarget(multiAddress);
РЕДАКТИРОВАТЬ: кажется, что только SessionAddress, переданный для initialize (), должен иметь значение ttl