RTSP — сетевой протокол потоковой передачи медиа¶
RTSP (Real Time Streaming Protocol, RFC 2326) — прикладной сетевой протокол уровня приложений, предназначенный для установления и управления сеансами потоковой передачи мультимедийных данных в реальном времени, например видеопотоков с IP-камер. RTSP не передаёт сами медиаданные, а служит «удочкой дистанционного управления» (remote control) для потоков, которые транспортируются по другим протоколам — прежде всего RTP. Протокол похож на HTTP по синтаксису запросов и ответов (методы, заголовки, коды состояния), но работает с длительными сеансами и поддерживает потоковую передачу в обоих направлениях.
¶Общие сведения
RTSP разработан в 1996 году совместно компаниями Netscape, Columbia University, Progressive Networks (позднее RealNetworks) и NetCast. Стандарт описан в документе RFC 2326, позднее обновлён версией RFC 7826 (2016). Протокол не является частью стека TCP/IP в узком смысле и не определяет формат медиаданных — он лишь описывает, как управлять сессиями доставки.
Ключевая особенность RTSP — разделение функций управления и передачи. Клиент отправляет команды (DESCRIBE, SETUP, PLAY и другие) по TCP-соединению на порт 554, а видеопоток, как правило, приходит отдельным потоком по RTP поверх UDP (или иногда по TCP). Благодаря этому задержка на управление не влияет на качество воспроизведения.
¶Методы протокола
RTSP определяет набор методов, аналогичных HTTP-методам:
- OPTIONS — запрос списка поддерживаемых сервером методов;
- DESCRIBE — получение описания сессии (обычно в формате SDP);
- SETUP — согласование параметров транспорта (UDP, TCP, порты) для потока;
- PLAY — начало воспроизведения потока с указанной позиции;
- PAUSE — приостановка воспроизведения;
- TEARDOWN — завершение сессии и освобождение ресурсов;
- ANNOUNCE — публикация описания сессии (используется при передаче от клиента к серверу);
- RECORD — начало записи потока;
- GET_PARAMETER / SET_PARAMETER — чтение и установка параметров сессии;
- REDIRECT — перенаправление клиента на другой сервер.
Типичный сеанс выглядит так: клиент отправляет DESCRIBE, получает SDP-описание с перечнем доступных потоков (видео, аудио, данные), затем для каждого потока вызывает SETUP, указывая предпочтительный транспорт, и завершает инициализацию методом PLAY.
¶Транспорт
RTSP поддерживает несколько вариантов транспорта, согласовываемых в заголовке Transport:
- RTP/UDP — наиболее распространённый вариант: RTP-пакеты идут по UDP напрямую к клиенту. Низкая задержка, но чувствительность к потере пакетов и сложности за NAT;
- RTP/TCP (interleaved) — RTP-пакеты инкапсулируются в TCP-соединение RTSP. Надёжнее за NAT и файрволами, но выше задержка из-за TCP-ретрансмиссий;
- HTTP-туннелирование — поток передаётся поверх HTTP-соединений, полезно при жёстких сетевых ограничениях.
¶SDP-описание
Ответ на DESCRIBE содержит сессию в формате SDP (Session Description Protocol) — текстовое описание с указанием заголовка сессии, имени автора, информации о потоках (кодеки, разрешение, частота дискретизации), адресах для приёма RTP и параметрах RTCP. SDP не является частью RTSP, но тесно с ним интегрирован.
¶Применение
Основная область применения RTSP — системы видеонаблюдения. Большинство IP-камер и видеорегистраторов (NVR) поддерживают RTSP как базовый протокол доступа к видеопотоку, что позволяет подключать оборудование разных производителей к единой системе и использовать универсальные проигрыватели (VLC, ffplay). В России RTSP широко применяется в корпоративных и муниципальных системах безопасности.
Вещание медиа. Протокол использовался в системах RealMedia (RealNetworks), QuickTime и некоторых IPTV-решениях. Однако для массового стриминга в интернете RTSP вытеснен более простыми протоколами — HLS (HTTP Live Streaming) и MPEG-DASH, работающими поверх обычного HTTP.
Автомобильные системы. RTSP встречается в видеорегистраторах и системах кругового обзора автомобилей.
¶Ограничения
RTSP сложнее в реализации, чем HLS или DASH, требует постоянного TCP-соединения для управления и отдельного канала для данных. Многие корпоративные файрволы и домашние роутеры блокируют UDP-трафик, что вынуждает переходить на TCP-туннелирование с потерей производительности. Кроме того, стандарт не унифицирован полностью: производители камер часто добавляют проприетарные расширения, что снижает совместимость.
¶Альтернативы
- RTMP (Real-Time Messaging Protocol) — от Adobe, изначально для Flash, теперь широко используется для «закачки» потоков на стриминговые платформы;
- HLS — потоковая передача поверх HTTP, разработана Apple;
- MPEG-DASH — открытый стандарт адаптивной потоковой передачи;
- WebRTC — для реального времени в браузерах.
¶См. также
- RTP
- RTCP
- SDP
- IP-камера
- Видеонаблюдение
¶Источники
- RFC 2326 — Real Time Streaming Protocol (RTSP)
- RFC 7826 — Real-Time Streaming Protocol Version 2.0
- RFC 3550 — RTP: A Transport Protocol for Real-Time Applications
