моя контактная информация
Почтамезофия@protonmail.com
2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀
🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C 、数据结构、音视频🍭
🤣本文内容🤣:🍭介绍RTSP协议 🍭
😎金句分享😎:🍭你不能选择最好的,但最好的会来选择你——泰戈尔🍭
⏰Время выпуска⏰: 06.07.2024 12:22:00
Эту статью нельзя пересылать без разрешения! ! !
РТСП, ФИО Real Time Streaming Protocol
, протокол потоковой передачи в реальном времени, представляет собой протокол прикладного уровня в системе протоколов TCP/IP. Это стандарт IETF RFC, представленный Колумбийским университетом, Netscape и RealNetworks.
Официальный документ о протоколе RTSP — RFC2326, ссылка на документ:RFC2326-Протокол потоковой передачи в реальном времени (RTSP)。
Приводятся ссылки на синтаксис и работу протокола RTSP. HTTP/1.1
, текстовый протокол, использующий набор символов ISO10646 и кодировку UTF-8, протокол транспортного уровня, который передает RTSP;TCP
, порт по умолчанию554
; Если это туннелирование RTSP-over-HTTP, порт TCP по умолчанию — 8080, обычно используемый в сочетании с протоколом RTP/RTCP, протокол RTP передает потоковые данные в реальном времени, а протокол RTCP завершает передачу потоков данных и команды управления.
Протокол RTP: полное имя
Real-time Transport Protocol
, протокол передачи в реальном времени, был анонсирован рабочей группой IETF по передаче мультимедиа в 1996 году в RFC 1889. Протокол RTP описывает стандартный формат пакетов для доставки аудио и видео через Интернет. Он построен на протоколе UDP.
Протокол RTCP: полное имя
Real-time Transport Control Protocol
, протокол управления транспортировкой в реальном времени, используемый с RTP. RTP использует порт UDP с четным номером; RTCP использует следующий порт RTP, который является портом с нечетным номером. RTCP и RTP работают вместе. RTP реализует передачу реальных данных, а RTCP отвечает за отправку управляющих пакетов всем участникам сеанса. Его основная функция — предоставление обратной связи о качестве обслуживания, предоставляемого RTP.
Разница между протоколом RTSP и протоколом HTTP:
RTSP учитывает состояние, его команды всегда отправляются по порядку, и одну команду всегда может потребоваться отправить перед другой командой. HTTP не имеет состояния. После того, как протокол отправит команду, соединение будет разорвано, и между командами нет зависимости.
Протокол rtsp использует порт 554, а http — порт 80.
Запросы RTSP могут отправляться как сервером, так и клиентом, тогда как запросы HTTP могут отправляться только клиентом.
Обычно используемые методы RTSP включают: OPTIONS, DESCRIBE, SETUP, PLAY, PAUSE, TEARDOWN, ANNOUNCE, GET_PARAMETER и SET_PARAMETER и т. д. Подробные инструкции по использованию следующие:
OPTIONS
: клиент получает от сервера метод, поддерживаемый сервером. Это не влияет на состояние сервера;DESCRIBE
: клиент получает описание медиа-объекта, указанного URL-адресом, с сервера, гдеAccept
Поле определяет формат описания;SETUP
: Клиент запрашивает сервер установить сеанс и подготовиться к передаче. Информация запроса в основном включает протокол передачи и номер порта клиента;PLAY
: клиент активно уведомляет сервер о начале отправки данных, используя механизм, указанный в SETUP.вRange
В этом поле указывается время начала и окончания воспроизведения (диапазон потока в реальном времени обычноRange: npt=0.000-
), когда поступает несколько запросов PLAY, сервер ставит запросы PLAY в очередь и выполняет их последовательно, то есть он должен дождаться завершения первого времени PLAY, прежде чем продолжить обработку второго сообщения PLAY.PAUSE
: Клиент запрашивает временную приостановку потоковой передачи мультимедиа с сервера.способен пройтиRange
Параметр приостанавливает воспроизведение в указанный момент времени, или вы можете указать поток для приостановки. Например, если вы укажете аудиопоток для приостановки, воспроизведение будет бесшумным.RECORD
: ЗАПИСЬ уведомляет сервер о том, что клиент начнет запись мультимедийных данных в соответствии с предыдущим описанием. вtimestamp
Поля отражают время начала и окончания (UTC). Если это поле отсутствует, будет использоваться время начала или окончания из описания мультимедиа. Если сеанс уже начался, запись начнется немедленно.request-URI
Следующий или другой URI. Если сервер не использует URI запроса, ответ должен быть 201 (Создан) и содержать заголовок Entity и Location, описывающий состояние запроса и ссылающийся на новый ресурс.TEARDOWN
: клиент запрашивает прекращение отправки указанного потока URL-адресов и освобождение связанных ресурсов.REDIRECT
: Чтобы перенаправить запрос, сервер уведомляет клиента о том, что он должен подключиться к другому местоположению сервера. Он содержит обязательный заголовок Location, который указывает, что клиент должен сделать запрос по этому URL-адресу. Он может содержать параметр Range, указывающий, когда перенаправление вступит в силу. Если клиент хочет продолжить отправку или получение мультимедиа для этого URI, он должен выдать запрос TEARDOWN для текущего сеанса и запрос SETUP для нового сеанса на указанном хосте.ANNOUNCE
: Когда клиент отправляет на сервер, это означает отправку описания презентации или медиа-объекта, идентифицированного URL-адресом запроса, на сервер.GET_PARAMETER
:GET_PARAMETER запрос на получение значений параметров для представления или потока, указанного в URI. Содержание ответов и ответов остается на усмотрение реализации. GET_PARAMETER без тела сущности можно использовать для проверки работоспособности («пинга») клиента или сервера.SET_PARAMETER
: Этот метод запрашивает установку значений параметров демо-потока или указанного URL-адреса. Запросы должны содержать только один параметр, позволяющий клиенту решить, почему конкретный запрос не выполнен. Если запрос содержит несколько параметров, все параметры могут быть успешно установлены, и сервер должен действовать только по этому запросу. Сервер должен разрешать повторное присвоение параметрам одного и того же значения, но не изменять значение параметра. Примечание. Параметры потоковой передачи мультимедиа необходимо устанавливать с помощью команды SETUP. Брандмауэрам полезно ограничить параметры передачи настроек SETUP.Всего выше представлено 11 методов RTSP, среди которых:SETUP
、PLAY
、TEARDOWN
Эти три команды необходимы в процессе RTSP, другие методы не нужны.иANNOUNCE
、GET_PARAMETER
、SET_PARAMETER
Три команды могут быть отправлены от клиента к серверу или от сервера к клиенту. Остальные команды отправляются от клиента к серверу.
RTSP имеет два типа сообщений: сообщения запроса и сообщения ответа. Сообщение запроса относится к сообщению запроса, отправленному от клиента серверу, а ответное сообщение относится к ответу сервера клиенту.
Сообщение запроса RTSP состоит из трех частей: строки запроса, заголовка запроса и тела запроса. Среди них строка запроса является обязательной, а заголовок и тело запроса являются необязательными в зависимости от конкретной ситуации.
rn
)Заканчивать.方法
: Это метод RTSP, представленный выше. Включая ОПЦИИ, ОПИСАНИЕ, НАСТРОЙКУ, ВОСПРОИЗВЕДЕНИЕ, ПАУЗУ, РАЗБОР и т. д.请求URI
: Идентифицирует медиа-ресурс, которым нужно управлять, обычно в формате rtsp://example.com/path/to/stream.协议版本
: указывает версию протокола RTSP, которой следует запрос, обычноRTSP/1.0
илиRTSP/2.0
。OPTIONS rtsp://192.168.3.225:554/wbc RTSP/1.0
CSeq: 2
User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
Сообщение запроса RTSP состоит из трех частей: строки состояния, заголовка ответа и тела ответа. Среди них строка состояния является обязательной, а заголовок и тело ответа являются необязательными в зависимости от конкретной ситуации.
协议版本
: указывает версию протокола RTSP, за которой следует ответ, обычно RTSP/1.0 или RTSP/2.0.状态码
: три цифры, например: 200, 401, 500 и т. д., используемые для обозначения результата обработки запроса. Первая цифра представляет категорию ответа: 2xx указывает на успех, 4xx указывает на ошибку клиента, а 5xx указывает на ошибку сервера.状态文本
: краткое текстовое описание, объясняющее конкретное значение соответствующего кода состояния, например: ОК, Несанкционировано и т. д.RTSP/1.0 200 OK
CSeq: 2
Date: Wed, Feb 04 1970 03:25:10 GMT
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
v=0
o=- 8913478 1 IN IP4 192.168.3.91
s=LIVE555 Streaming Media v2016.07.19
i=1080
t=0 0
a=tool:LIVE555 Streaming Media v2016.07.19
a=type:broadcast
a=control:*
a=range:npt=0-
a=x-qt-text-nam:LIVE555 Streaming Media v2016.07.19
a=x-qt-text-inf:1080
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:5000
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=64002A;sprop-parameter-sets=Z2QAKq2EAQwgCGEAQwgCGEAQwgCEO1A8ARPyoA==,aO48sA==
a=control:track1
m=audio 0 RTP/AVP 97
c=IN IP4 0.0.0.0
b=AS:768
a=rtpmap:97 PCMA/48000/2
a=control:track2
Заголовок ответа сообщения RTSP будет содержать несколько полей. Ниже приведены некоторые часто используемые поля.
SETUP
Выбранный в ответе, как только клиент получит идентификатор сеанса, он будет включать идентификатор сеанса в сообщения запроса на будущую операцию для сеанса. Например: сеанс: 4581E0AE timeout=65;Используйте Wireshark для захвата сетевых пакетов потокового мультимедиа RTSP. Вы можете видеть, что общий процесс выглядит следующим образом:
1. Клиент отправляетOPTIONS
Метод, ответ сервера;
2. Клиент отправляетDESCRIBE
Метод, ответ сервера;
3. Клиент отправляетSETUP
Метод, ответ сервера;
2. Клиент отправляетPLAY
Метод, ответ сервера;
2. Клиент отправляетTEARDOWN
Метод, ответ сервера;
Полный пакет потоков выглядит следующим образом:
OPTIONS rtsp://192.168.3.225:554/wbc RTSP/1.0
CSeq: 2
User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
RTSP/1.0 200 OK
CSeq: 2
Date: Wed, Jul 03 2024 14:42:11 GMT
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
DESCRIBE rtsp://192.168.3.225:554/wbc RTSP/1.0
CSeq: 3
User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
Accept: application/sdp
RTSP/1.0 200 OK
CSeq: 3
Date: Wed, Jul 03 2024 14:42:11 GMT
Content-Base: rtsp://192.168.3.225/wbc/
Content-Type: application/sdp
Content-Length: 472
v=0
o=- 1720014950032000 1 IN IP4 192.168.3.225
s=LIVE555 Streaming Media v2016.07.19
i=wbc
t=0 0
a=tool:LIVE555 Streaming Media v2016.07.19
a=type:broadcast
a=control:*
a=range:npt=0-
a=x-qt-text-nam:LIVE555 Streaming Media v2016.07.19
a=x-qt-text-inf:wbc
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:5000
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=640029;sprop-parameter-sets=Z2QAKawsaoHgCJ WbgoCCgQ=,aO4xshs=
a=control:track1
SETUP rtsp://192.168.3.225/wbc/track1 RTSP/1.0
CSeq: 4
User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
Transport: RTP/AVP;unicast;client_port=55320-55321
RTSP/1.0 200 OK
CSeq: 4
Date: Wed, Jul 03 2024 14:42:11 GMT
Transport: RTP/AVP;unicast;destination=192.168.2.180;source=192.168.3.225;client_port=55320-55321;server_port=6970-6971
Session: 4581E0AE;timeout=65
PLAY rtsp://192.168.3.225/wbc/ RTSP/1.0
CSeq: 5
User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
Session: 4581E0AE
Range: npt=0.000-
RTSP/1.0 200 OK
CSeq: 5
Date: Wed, Jul 03 2024 14:42:11 GMT
Range: npt=0.000-
Session: 4581E0AE
RTP-Info: url=rtsp://192.168.3.225/wbc/track1;seq=7880;rtptime=3548171463
TEARDOWN rtsp://192.168.3.225/wbc/ RTSP/1.0
CSeq: 6
User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
Session: 4581E0AE
RTSP/1.0 200 OK
CSeq: 6
Date: Wed, Jul 03 2024 14:42:19 GMT
Ниже будет проанализирован каждый метод RTSP и ответ, использованные в предыдущем сообщении.
Получите доступные методы с сервера:
Клиент отправляет метод OPTIONS и используетCSeq
Чтобы указать порядковый номер запроса, используйтеUser-Agent
идентифицировать своего агента;
Сервер ответит на запрос, используяCSeq
Чтобы указать, на какой запрос идет ответ, используйтеDate
укажите дату,Public
Указывает предоставленный метод.
Получить с сервераrtsp://192.168.3.225:554/wbc
описание медиа-объекта, гдеAccept
В поле указывается формат описания:
Клиент отправляет метод DESCRIBE и используетCSeq
Чтобы указать порядковый номер запроса, используйтеUser-Agent
указать своего агента,Accept
В этом поле указывается формат описания: SDP;
Сервер ответит на этот запрос, используя CSeq
Чтобы указать, на какой запрос идет ответ, используйтеDate
укажите дату,Content-Type
Указывает, что тип контента — SDP.Content-Length
Укажите длину контента.
Уведомление:
1. Для некоторых, которым требуются имя пользователя и пароль, сервер будет обрабатывать метод DESCRIBE для аутентификации. Если информация аутентификации авторизации не передается или аутентификация не удалась, сервер вернет ответ с номером ошибки 401. Когда клиент получает ответ 401, ему необходимо сгенерировать авторизацию на основе известной информации аутентификации пользователя и отправить описание еще раз. Если аутентификация прошла успешно, сервер возвращает ответную информацию, содержащую SDP.
2. Информация SDP, возвращаемая сервером, будет проанализирована в следующей статье.
Клиент запрашивает сервер установить сеанс и подготовиться к передаче. Информация запроса в основном включает протокол передачи и номер порта клиента;
Клиент отправляет метод SETUP и используетCSeq
Чтобы указать порядковый номер запроса, используйтеUser-Agent
указать своего агента,Transport
В поле указывается допустимый протокол передачи RTP/AVP и порт (здесь порт RTP — 55320, а порт RTCP — 55321);
Сервер ответит на этот запрос, используя CSeq
Чтобы указать, на какой запрос идет ответ, используйтеDate
укажите дату,Transport
Укажите транспортный протокол RTP/AVP, адрес назначения, адрес источника, порт клиента (RTP — 55320, RTCP — 55321), порт сервера (RTP — 6970, RTCP — 6971),Session
Укажите идентификатор сеанса.
Уведомление:
В этом примере RTP передается по протоколу UDP. Иногда RTP передается через TCP, затем.Transport
Поля будут различаться. Это может быть следующим образом:
客户端请求:Transport: RTP/AVP/TCP;unicast;interleaved=0-1
服务器响应:Transport: RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=24e4e500;mode="play"
RTP/AVP/TCP
Указывает, что поток RTP передается через TCP. Когда это значение появляется, сообщение не имеет поля client_port;
interleaved=0-1
Представляет идентификатор потока, идентифицирующий идентификатор потока RTP = 0;
Когда поток кода передается через TCP, он использует TCP-канал совместно с RTSP, поэтому не требуется устанавливать новое соединение. Чтобы различать протоколы RTP, RTCP и RTSP, необходимо добавить идентификатор заголовка. Здесь используется поле заголовка, а tcphead состоит из четырех слов, формат следующий:
| magic number | channel number | embedded data length | data |
magic number
: 1 байт, фиксированный0x24
, это персонаж$
, указывающий, что передаваемые данные не являются протоколом rtsp;
channel number
: 1 байт, идентификатор канала, идентифицирующий тип потока, который представляет собой идентификатор потока, упомянутый ранее;
embedded data length
: 2 байта, обозначающие длину потока
data
: указывает пакетные данные RTP/RTCP.
Клиент активно уведомляет сервер о необходимости начать отправку данных, используя механизм, указанный SETUP.
Клиент отправляет метод PLAY и используетCSeq
Чтобы указать порядковый номер запроса, используйтеUser-Agent
указать своего агента,Session
поле указывает идентификатор сеанса,Range
В поле указывается время начала и окончания воспроизведения.
Сервер ответит на этот запрос, используя CSeq
Укажите, на какой запрос идет ответ;Date
указать дату;Range
В поле указывается время начала и окончания воспроизведения;Session
Поле указывает идентификатор сеанса;RTP-Info
Поле описывает информацию RTP отправляемого кодового потока, такую как seq и rtptime первого пакета RTP. Клиент может демультиплексировать на основе этого поля.
Клиент запрашивает прекращение отправки указанного потока URL-адресов и освобождение связанных ресурсов.
Клиент отправляет метод TEARDOWN и используетCSeq
Чтобы указать порядковый номер запроса, используйтеUser-Agent
указать своего агента,Session
Поле указывает идентификатор сеанса.
Сервер ответит на этот запрос, используя CSeq
Укажите, на какой запрос идет ответ;Date
Укажите дату.
Содержимое ответа RTSP обычно содержит трехзначный целочисленный код ответа и фразу причины. Целью фразы является предоставление краткого текстового описания кода состояния. Клиенту не нужно проверять или отображать фразу причины. По разнице между первой цифрой кода ответа его можно разделить на следующие пять категорий:
Конечно, коды ошибок RTSP и методы RTSP тесно связаны. Некоторые ошибки могут возникать только в определенных методах. Подробная информация о кодах ошибок приведена ниже.
код ошибки | фраза причины | метод ответа |
---|---|---|
100 | Продолжать | Все |
200 | Успех | Все |
201 | Созданный | ЗАПИСЫВАТЬ |
250 | Мало места для хранения | ЗАПИСЫВАТЬ |
300 | Множественный выбор | Все |
301 | переехал навсегда | Все |
302 | Временно переехал | Все |
303 | Смотреть другое | Все |
305 | Используй прокси | Все |
400 | Плохой запрос | Все |
401 | Несанкционированный | Все |
402 | Требуется оплата | Все |
403 | Запрещенный | Все |
404 | Не найдено | Все |
405 | метод не разрешен | Все |
406 | Недопустимо | Все |
407 | Требуется аутентификация прокси-сервера | Все |
408 | Запрос времени ожидания | Все |
410 | Ушел | Все |
411 | Требуемая длина | Все |
412 | Предварительное условие не выполнено ОПИСАНИЕ | НАСТРАИВАТЬ |
413 | Запрос сущности слишком большой | Все |
414 | Запрос-URI слишком длинный | Все |
415 | Неподдерживаемый тип носителя | Все |
451 | Неверный параметр | НАСТРАИВАТЬ |
452 | Незаконный идентификатор конференции | НАСТРАИВАТЬ |
453 | Недостаточно пропускной способности | НАСТРАИВАТЬ |
454 | Сессия не найдена | Все |
455 | Метод недействителен в этом состоянии | Все |
456 | Недопустимое поле заголовка | Все |
457 | Неверный диапазон | ИГРАТЬ |
458 | Параметр доступен только для чтения | УСТАНОВИТЬ_ПАРАМЕТР |
459 | Агрегатная операция не допускается | Все |
460 | Разрешены только агрегатные операции | Все |
461 | Неподдерживаемый транспорт | Все |
462 | Место назначения недостижимо | Все |
500 | Внутренняя ошибка сервера | Все |
501 | Не реализована | Все |
502 | Плохой шлюз | Все |
503 | Сервис недоступен | Все |
504 | Тайм-аут шлюза | Все |
505 | Версия RTSP не поддерживается | Все |
551 | Вариант не поддерживается | Все |
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁
Ссылаться на:
Протокол потоковой передачи в реальном времени — RTSP [подробное объяснение]
Мастер-запросы и ответы RTSP с нуля 1
Подробное объяснение протокола потокового мультимедиа RTSP