Я делаю реализацию Java из RFC 3550 (RTP) , и я столкнулся с небольшой проблемой:
В глава 11, пункт 2, в нем говорится, что:
(...) Участник НЕ ДОЛЖЕН предполагать, что порт источника входящего пакета RTP или RTCP может использоваться в качестве порта назначения для исходящегоRTP или RTCP пакеты.Когда пакеты данных RTP отправляются в обоих направлениях, пакеты SRCP RT каждого участника ДОЛЖНЫ отправляться на порт, который другой участник указал для приема RTCP.(...)
RTP не имеет какого-либо механизма информирования об этих адресах и портах (это зависит от SDP или какого-либо другого протокола настройки), что позволило бы мне понять этот абзац как «есливы получаете данные из неизвестного источника, просто отбросьте их ".
Но в разделе 6.3.3 в основном говорится, что при получении пакета RTP или не-BYE RTCP снеизвестный SSRC, новый участник должен быть добавлен в таблицу.
Итак, чтобы подвести итог:
- Вы должны добавить нового участника при получении неизвестного SSRC;
- Нельзя использовать исходный IP / порт пакета в качестве места назначения пакетов для этого участника;
- SDP не определяет SSRC, который будет использоваться каждым из участников RTP;
- Вы можете вручную добавить участников RTP (обнаруженных другими способами), НО вы не представляете, каким будет SSRC.
Итак, вопрос на миллион долларов: как справиться с неожиданным SSRC?