Поддержание живого соединения Rtsp - PullRequest
7 голосов
/ 11 октября 2011

У меня есть простой клиент Rtsp ... Клиент отправляет команды Rtsp на сервер Rtsp и получает пакеты RTP с сервера.

Проблема в том, что через некоторое время (около 3-4 минут) мой сторонний RTSP Разрыв соединения с моим клиентом RTSP.

Я не реализовал RTCP ... Я получаю пакеты rtp с сервера rtsp, но не отправляет пакет RTCP ...

Я делаю простой поиск и обнаруживаю, что некоторые парни тоже используют некоторые команды RTSP [например, OPTIONS, SET PARAMETER-GET PARAMETER], которые поддерживают связь между RTSP-сервером и клиентом ... Но в моем случае это не работает ...

Вот мои вопросы:

  1. Каков наилучший способ сохранить соединение с RTSP-сервером?
  2. Должен ли я реализовать RTCP [отправлять пакеты RTCP на сервер]? Может ли соединение оборваться, потому что я не отправляю пакеты RTCP на сервер?

Ответы [ 2 ]

7 голосов
/ 11 октября 2011

Какое значение времени ожидания вы получаете в ответе SETUP? Используете ли вы это значение для реализации функции поддержки активности?

Session = "Session" ":" session-id [";" "timeout" "=" дельта-секунды ]

Обычно RTSP основан на TCP, а RTP - на UDP. Поэтому в идеале оба канала должны поддерживать работоспособность. Если сеанс RTP закрыт, это не означает, что соединение RTSP также должно быть разорвано, тогда как каналы RTP должны быть закрыты при разрыве канала RTSP.

1) Как лучше всего поддерживать связь с RTSP-сервером? -> Периодически отправлять любой запрос RTSP (OPTIONS, SET_PARAMETER или GET_PARAMETER) до получения значения timeout в ответе SETUP.

2) Должен ли я реализовать RTCP [отправлять пакеты RTCP на сервер]? Может ли соединение оборваться, потому что я не отправляю пакеты RTCP на сервер? -> RFC (RTSP или RTP) не предписывает требование RTCP поддерживать каналы RTP живыми.

0 голосов
/ 02 октября 2016

Отправка запроса OPTIONS для меня не сработала.

Единственная команда RTSP, которую я мог отправить для поддержания соединения, была GET_PARAMETER

Мой тайм-аут 60 с, и я посылаю GET_PARAMETERзапрос каждые 40 секунд

Работает как чудо!

(Нет, вам не нужно RTCP-пакеты на сервер)

...