Протокол потоковой передачи в реальном времени

редактировать

Протокол потоковой передачи в реальном времени (RTSP ) - это сетевой элемент управления протокол, разработанный для использования в развлекательных и коммуникационных системах для управления потоковым мультимедиа серверами. Протокол используется для установления и управления медиа-сеансами между конечными точками. Клиенты медиа-серверов выдают команды в стиле VHS, такие как воспроизведение, запись и пауза, для облегчения управления в реальном времени потоковой передачей мультимедиа от сервера к клиенту (видео по запросу) или от клиента к сервер (запись голоса).

Сама по себе передача потоковых данных не является задачей RTSP. Большинство серверов RTSP используют транспортный протокол реального времени (RTP) в сочетании с протоколом управления в реальном времени (RTCP) для доставки медиапотока. Однако некоторые поставщики реализуют собственные транспортные протоколы. Программное обеспечение сервера RTSP от RealNetworks, например, также использовало проприетарный Real Data Transport (RDT) RealNetworks.

RTSP был разработан RealNetworks, Netscape и Колумбийским университетом, а первый проект был представлен в IETF в 1996 году. Он был стандартизирован Рабочей группой Multiparty Multimedia Session Control Working Group (MMUSIC WG) Internet Engineering Task Force (IETF) и опубликовано как RFC 2326 в 1998 году. RTSP 2.0 опубликовано как RFC 7826 в 2016 году в качестве замены RTSP 1.0. RTSP 2.0 основан на RTSP 1.0, но не имеет обратной совместимости, кроме как в основном механизме согласования версии.

Содержание

  • 1 Директивы протокола
  • 2 Адаптация скорости
  • 3 Реализации
    • 3.1 Сервер
    • 3.2 Клиент
  • 4 Ссылки
  • 5 Внешние ссылки

Директивы протокола

Хотя в некотором смысле похож на HTTP, RTSP определяет управляющие последовательности, полезные для управления воспроизведением мультимедиа. Хотя HTTP без сохранения состояния, RTSP имеет состояние; идентификатор используется, когда необходимо отслеживать параллельные сеансы. Как и HTTP, RTSP использует TCP для поддержания сквозного соединения, и, хотя большинство управляющих сообщений RTSP отправляются клиентом на сервер, некоторые команды передаются в другом направлении (то есть от сервера к клиенту).

Здесь представлены основные запросы RTSP. Также доступны некоторые типичные HTTP-запросы, такие как запрос OPTIONS. По умолчанию транспортный уровень номер порта равен 554 как для TCP, так и для UDP, причем последний редко используется для запросов управления.

OPTIONS
Запрос OPTIONS возвращает типы запросов, которые сервер будет принимать.
C->S: OPTIONS rtsp: //example.com/media.mp4 RTSP / 1.0 CSeq: 1 Требовать: implicit-play Proxy-Require: gzipped-messages S->C: RTSP / 1.0 200 OK CSeq: 1 Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE
DESCRIBE
Запрос DESCRIBE включает RTSP URL (rtsp: //...) и тип данных ответа, которые могут быть обработаны. Этот ответ включает описание представления, обычно в формате Протокол описания сеанса (SDP). Среди прочего, в описании презентации перечислены медиапотоки, управляемые с помощью совокупного URL. В типичном случае существует по одному медиапотоку для аудио- и видеопотока. URL-адреса медиапотока либо получаются непосредственно из полей управления SDP, либо путем добавления поля управления SDP к совокупному URL-адресу.
C->S: DESCRIBE rtsp: //example.com/media.mp4 RTSP / 1.0 CSeq: 2 S->C: RTSP / 1.0 200 OK CSeq: 2 Content-Base: rtsp: //example.com/media.mp4 Content-Type: application / sdp Content-Length: 460 m = video 0 RTP / AVP 96 a = control: streamid = 0 a = range: npt = 0-7.741000 a = length: npt = 7.741000 a = rtpmap: 96 MP4V-ES / 5544 a = mimetype: string; "video / MP4V-ES" a = AvgBitRate: integer; 304018 a = StreamName: string; "подсказка видеодорожки" m = аудио 0 RTP / AVP 97 a = control: streamid = 1 a = range: npt = 0-7.712000 a = length: npt = 7.712000 a = rtpmap : 97 mpeg4-generic / 32000/2 a = mimetype: string; "audio / mpeg4-generic" a = AvgBitRate: integer; 65790 a = StreamName: string; "hined audio track"
SETUP
Запрос SETUP определяет, как должен транспортироваться один медиапоток. Это необходимо сделать до отправки запроса PLAY. Запрос содержит URL-адрес медиапотока и спецификатор транспорта. Этот спецификатор обычно включает в себя локальный порт для приема данных RTP (аудио или видео) и другой порт для данных RTCP (метаинформация). Ответ сервера обычно подтверждает выбранные параметры и заполняет недостающие части, такие как выбранные сервером порты. Каждый медиапоток должен быть настроен с помощью SETUP перед отправкой совокупного запроса воспроизведения.
C->S: SETUP rtsp: //example.com/media.mp4/streamid=0 RTSP / 1.0 CSeq: 3 Транспорт: RTP / AVP; одноадресная передача; client_port = 8000-8001 S->C: RTSP / 1.0 200 OK CSeq: 3 Транспорт: RTP / AVP; одноадресная передача; client_port = 8000-8001; server_port = 9000-9001; ssrc = 1234ABCD Сессия: 12345678 C ->S: НАСТРОЙКА rtsp: //example.com/media.mp4/streamid=1 RTSP / 1.0 CSeq: 3 Транспорт: RTP / AVP; одноадресный; client_port = 8002-8003 Сессия: 12345678 S->C: RTSP / 1.0 200 OK CSeq: 3 Транспорт: RTP / AVP; одноадресная передача; client_port = 8002-8003; server_port = 9002-9003; ssrc = 1234ABCD Session: 12345678
PLAY
Запрос PLAY вызовет один или все носители потоки для воспроизведения. Запросы на воспроизведение можно складывать, отправляя несколько запросов на воспроизведение. URL-адрес может быть совокупным URL-адресом (для воспроизведения всех медиапотоков) или отдельным URL-адресом медиапотока (для воспроизведения только этого потока). Можно указать диапазон. Если диапазон не указан, поток воспроизводится с начала и воспроизводится до конца, или, если поток приостановлен, он возобновляется с того места, где он был приостановлен.
C->S: PLAY rtsp: // example.com/media.mp4 RTSP / 1.0 CSeq: 4 Диапазон: npt = 5-20 Сессия: 12345678 S->C: RTSP / 1.0 200 OK CSeq: 4 Сессия: 12345678 RTP-информация: url = rtsp: // example.com / media.mp4 / streamid = 0; seq = 9810092; rtptime = 3450012
PAUSE
Запрос PAUSE временно останавливает один или все медиапотоки, чтобы позже его можно было возобновить запросом PLAY. Запрос содержит агрегированный URL-адрес или URL-адрес медиапотока. Параметр диапазона в запросе PAUSE указывает, когда следует приостановить. Если параметр диапазона опущен, пауза возникает немедленно и на неопределенный срок.
C->S: PAUSE rtsp: //example.com/media.mp4 RTSP / 1.0 CSeq: 5 Session: 12345678 S->C: RTSP / 1.0 200 OK CSeq: 5 Сессия: 12345678
RECORD
Этот метод инициирует запись диапазона мультимедийных данных в соответствии с описанием презентации. Отметка времени отражает время начала и окончания (UTC). Если временной диапазон не указан, используйте время начала или окончания, указанное в описании презентации. Если сеанс уже начался, немедленно начните запись. Сервер решает, хранить ли записанные данные под URI запроса или под другим URI. Если сервер не использует URI запроса, ответ должен быть 201 и содержать объект, который описывает состояния запроса и ссылается на новый ресурс, и заголовок Location.
C->S: RECORD rtsp: / /example.com/media.mp4 RTSP / 1.0 CSeq: 6 Session: 12345678 S->C: RTSP / 1.0 200 OK CSeq: 6 Session: 12345678
ANNOUNCE
Метод ANNOUNCE служит двум целям:
При отправке от клиента к серверу ANNOUNCE отправляет на сервер описание презентации или медиа-объекта, идентифицированного URL-адресом запроса. При отправке с сервера на клиент ANNOUNCE обновляет описание сеанса в реальном времени. Если к презентации добавляется новый медиапоток (например, во время прямой презентации), все описание презентации должно быть отправлено снова, а не только дополнительные компоненты, чтобы компоненты можно было удалить.
C->S: ОБЪЯВЛЕНИЕ rtsp: //example.com/media.mp4 RTSP / 1.0 CSeq: 7 Дата: 23 января 1997 г., 15:35:06 GMT Сессия: 12345678 Content-Type: application / sdp Content-Length: 332 v = 0 o = mhandley 2890844526 2890845468 IN IP4 126.16.64.4 s = Семинар SDP i = Семинар по протоколу описания сеанса u = http: //www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps e = mjh @ isi.edu (Марк Хэндли) c = IN IP4 224.2.17.12/127 t = 2873397496 2873404696 a = recvonly m = audio 3456 RTP / AVP 0 m = video 2232 RTP / AVP 31 S->C: RTSP / 1.0 200 OK CSeq: 7
TEARDOWN
Запрос TEARDOWN используется для завершения сеанса. Он останавливает все медиапотоки и освобождает все данные, связанные с сеансом, на сервере.
C->S: TEARDOWN rtsp: //example.com/media.mp4 RTSP / 1.0 CSeq: 8 Session: 12345678 S->C: RTSP /1.0 200 OK CSeq: 8
GET_PARAMETER
Запрос GET_PARAMETER извлекает значение параметра представления или потока, указанного в URI. Содержание ответа и ответа оставлено на усмотрение реализации. GET_PARAMETER без тела объекта может использоваться для проверки работоспособности клиента или сервера ("ping").
S->C: GET_PARAMETER rtsp: //example.com/media.mp4 RTSP / 1.0 CSeq: 9 Content-Type: текст / параметры Сессия: 12345678 Content-Length: 15 packets_received jitter C->S: RTSP / 1.0 200 OK CSeq: 9 Content-Length: 46 Content-Type: text / parameters packets_received: 10 дрожание: 0,3838
SET_PARAMETER
Этот метод запрашивает установку значения параметра для презентации или потока, указанного в URI.
C->S: SET_PARAMETER rtsp: //example.com/media.mp4 RTSP / 1.0 CSeq: 10 Content-length: 20 Content-type: text / parameters barparam: barstuff S->C: RTSP / 1.0 451 Недопустимый параметр CSeq: 10 Content-length: 10 Content-type: text / parameters barparam
REDIRECT
Запрос REDIRECT сообщает клиенту, что он должен подключиться к другому серверу. Он содержит обязательный заголовок Location, который указывает, что клиент должен отправлять запросы для этого URL. Он может содержать параметр Range, указывающий, когда перенаправление вступает в силу. Если клиент хочет продолжить отправку или получение мультимедиа для этого URI, клиент ДОЛЖЕН отправить запрос TEARDOWN для текущего сеанса и SETUP для нового сеанса на указанном хосте.
S->C: REDIRECT rtsp: / /example.com/media.mp4 RTSP / 1.0 CSeq: 11 Расположение: rtsp: //bigserver.com: 8001 Диапазон: clock = 19960213T143205Z-
Встроенные (чередующиеся) двоичные данные
Определенные конструкции межсетевых экранов и другие обстоятельства могут вынудить сервер чередовать методы RTSP и потоковые данные. Как правило, этого чередования следует избегать без необходимости, поскольку оно усложняет работу клиента и сервера и накладывает дополнительные накладные расходы. Чередующиеся двоичные данные СЛЕДУЕТ использовать, только если RTSP передается по TCP. Потоковые данные, такие как пакеты RTP, инкапсулируются знаком доллара ASCII (24 шестнадцатеричного числа), за которым следует однобайтовый идентификатор канала, за которым следует длина инкапсулированных двоичных данных в виде двоичного двухбайтового целого числа в сетевом порядке байтов. Данные потока следуют сразу же после этого, без CRLF, но включая заголовки протокола верхнего уровня. Каждый блок $ содержит ровно один блок данных протокола верхнего уровня, например, один пакет RTP.
C->S: SETUP rtsp: //example.com/media.mp4 RTSP / 1.0 CSeq: 3 Транспорт: RTP / AVP / TCP; interleaved = 0-1 S->C: RTSP / 1.0 200 OK CSeq: 3 Дата: 5 июня 1997 г. 18:57:18 GMT Транспорт: RTP / AVP / TCP; interleaved = 0-1 Сессия: 12345678 C->S: PLAY rtsp: //example.com/media.mp4 RTSP / 1.0 CSeq: 4 Сессия: 12345678 S->C: RTSP / 1.0 200 OK CSeq: 4 Сессия: 12345678 Дата: 05 июня 1997 г. 18:59:15 GMT RTP-Info: url = rtsp: //example.com/media.mp4; seq = 232433; rtptime = 972948234 S->C: $ \ 000 {2 байта длины} {"длина" байтов данных, с заголовком RTP } S->C: $ \ 000 {длина 2 байта} {"длина" байтов данных, с заголовком RTP} S->C: $ \ 001 {2 байта длины} {"длина" байтов пакета RTCP}

Адаптация скорости

RTSP с использованием RTP и RTCP позволяет реализовать адаптацию скорости.

Реализации

Сервер

Многие CCTV / камеры видеонаблюдения, часто называемые IP-камеры также поддерживают потоковую передачу RTSP, особенно с профилями ONVIF G, S, T.

Клиент

Ссылки

Внешние ссылки

Последняя правка сделана 2021-06-03 09:59:34
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте