Ответ 1
Не слишком сильно использовать свой собственный рожок, но я рекомендую попробовать IcedJava. (Это часть проекта SipTools). Он активно разрабатывается, имеет стабильную версию версии версии 0.9 и поддерживает такие варианты использования, как RTP-потоковая передача из коробки.
Что касается поддержки TCP, которая предназначена для более поздней версии, но вам будет сложно поддерживать TCP по сравнению с симметричным nat из-за блокировки трехстороннего рукопожатия. Даже расширения TCP для спецификации ICE отмечают, что соединения TCP гораздо менее вероятны, чем соединения UDP между natted peers.
Тем не менее, вы можете обойти это путем маршрутизации пакетов TCP поверх моста UDP, включая все функции исправления ошибок и управления потоком. (Я забыл о RFC для этого, но это окончательная спецификация). Тем не менее, все это относительно новые спецификации, а спецификация ICE-TCP еще не окончательна. Даже в активном развитии это потребует времени для реализации.