#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-сервером и клиентом… Но в моем случае это не работает…
Вот мои вопросы:
- Каков наилучший способ поддерживать активное соединение с RTSP-сервером?
- Должен ли я реализовывать 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».