Поддержание активного Rtsp-соединения

#rtsp #rtp #rtsp-client

#rtsp #rtp #rtsp-клиент

Вопрос:

У меня простой 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 на сервер?

Ответ №1:

Какое значение времени ожидания вы получаете в ответе УСТАНОВКИ? Используете ли вы это значение для реализации функции поддержания работоспособности?

Session = «Session» «: » Идентификатор сеанса [ «;» «тайм-аут» «=»дельта-секунды ]

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

1) Каков наилучший способ поддерживать активное соединение с RTSP-сервером? —> Периодически отправляйте любой RTSP-запрос (ПАРАМЕТРЫ, SET_PARAMETER или GET_PARAMETER) до timeout получения значения в ответе УСТАНОВКИ.

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

Комментарии:

1. Мой сторонний rtsp-сервер не выдает значение времени ожидания сеанса… Хотя я отправляю команду OPTIONS каждые 5 секунд, она прерывает соединение…

2. Это означает, что ваш сервер ожидает пакеты RTCP.

3. ДА… Когда я отправляю пакеты RTCP, он не удаляет соединения… Но это «съедает» пропускную способность axtra..

4. Стоимость отправки RTCP минимальна. RTCP должен занимать только 5% от вашей общей пропускной способности. Поскольку вы беспокоитесь о пропускной способности, то отправка RTCP для вас более важна. На основе пакетов RTCP сервер может динамически управлять пропускной способностью в зависимости от нагрузки на сеть. RTCP может использоваться для расчета потерь пакетов и дрожания в сети. Таким образом, RTCP важен для поддержания качества системы.

5. @Alam Sir у меня такой же случай, но проблема в том, что мой клиент подключается к серверу через порт 2222 и начинает получать поток rtsp с сервера. теперь, как я буду периодически отправлять запрос RTSP (ПАРАМЕТРЫ, SET_PARAMETER или GET_PARAMETER) до того, как значение тайм-аута будет получено в ответе НАСТРОЙКИ на том же порту, пока я буду получатьпоток данных,

Ответ №2:

Отправка запроса ПАРАМЕТРОВ не сработала для меня.

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

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

Работает как шарм!

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

Комментарии:

1. Обратите внимание, что «GET_PARAMETER» поддерживается не всеми RTSP-серверами. Перед отправкой вы должны проверить ответ на «ПАРАМЕТРЫ», если он содержит параметр «GET_PARAMETER».