Обмен технологиями

[Аудио и видео | RTSP] Подробное объяснение протокола RTSP и анализ примеров захвата пакетов (подробно, не вдаваясь в подробности)

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 方法

Обычно используемые методы 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, среди которых:SETUPPLAYTEARDOWN Эти три команды необходимы в процессе RTSP, другие методы не нужны.иANNOUNCEGET_PARAMETERSET_PARAMETERТри команды могут быть отправлены от клиента к серверу или от сервера к клиенту. Остальные команды отправляются от клиента к серверу.


Вставьте сюда описание изображения

🎄三、RTSP 的 请求报文 与 响应报文

RTSP имеет два типа сообщений: сообщения запроса и сообщения ответа. Сообщение запроса относится к сообщению запроса, отправленному от клиента серверу, а ответное сообщение относится к ответу сервера клиенту.

✨3.1, сообщение запроса RTSP

Сообщение запроса RTSP состоит из трех частей: строки запроса, заголовка запроса и тела запроса. Среди них строка запроса является обязательной, а заголовок и тело запроса являются необязательными в зависимости от конкретной ситуации.
Вставьте сюда описание изображения

  • Строка запроса. Строка запроса состоит из метода, URI запроса и версии протокола, разделенных пробелами и которым предшествует CRLF (т. е.: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 (порядковый номер, используемый для идентификации запроса), идентификатор сеанса (идентификатор сеанса), транспорт (транспортный протокол) и т. д. Каждое поле заголовка состоит из имени поля, двоеточия и значения поля, и каждое поле заголовка разделено CRLF.
    Вот пример полного заголовка запроса:
    CSeq: 2
    User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
    
  • Тело запроса: Тело запроса используется для передачи дополнительных данных. Конкретное содержимое тела запроса зависит от метода RTSP, используемого в строке запроса. Примечание. После заголовка запроса необходимо вставить пустую строку (CRLF), чтобы отличить заголовок запроса от тела запроса. Большинство сообщений запроса не имеют тела запроса.

✨3.2, ответное сообщение RTSP

Сообщение запроса RTSP состоит из трех частей: строки состояния, заголовка ответа и тела ответа. Среди них строка состояния является обязательной, а заголовок и тело ответа являются необязательными в зависимости от конкретной ситуации.
Вставьте сюда описание изображения

  • Строка состояния: Строка состояния содержит версию протокола, код состояния и текст состояния, разделенные пробелами и заканчивающиеся CRLF (т. е.: «rn»).
    协议版本: указывает версию протокола RTSP, за которой следует ответ, обычно RTSP/1.0 или RTSP/2.0.
    状态码 : три цифры, например: 200, 401, 500 и т. д., используемые для обозначения результата обработки запроса. Первая цифра представляет категорию ответа: 2xx указывает на успех, 4xx указывает на ошибку клиента, а 5xx указывает на ошибку сервера.
    状态文本: краткое текстовое описание, объясняющее конкретное значение соответствующего кода состояния, например: ОК, Несанкционировано и т. д.
    Вот пример строки ответа:
    RTSP/1.0 200 OK
    
  • Заголовок ответа. Заголовок ответа содержит информацию, аналогичную заголовку запроса, например: CSeq (порядковый номер, используемый для идентификации запроса), идентификатор сеанса (идентификатор сеанса), транспорт (транспортный протокол) и т. д. Формат каждого поля заголовка ответа такой же, как и у заголовка запроса, поэтому мы не будем здесь вдаваться в подробности.
    CSeq: 2
    Date: Wed, Feb 04 1970 03:25:10 GMT
    Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
    
  • Тело ответа: некоторые ответы RTSP (например, DESCRIBE) могут содержать тело ответа для передачи дополнительных данных.Примечание. После заголовка ответа необходимо вставить пустую строку (CRLF).Различайте заголовки и тело ответа.
    Ниже приведен пример полного тела ответа.
    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 报文的常用字段

Заголовок ответа сообщения RTSP будет содержать несколько полей. Ниже приведены некоторые часто используемые поля.

  • Принимать : используется для указания типа структуры данных объекта, которую клиент сообщает серверу о необходимости принятия. Например: Примите: application/sdp, затем сервер возвращает тип структуры данных объекта через поле Content-Type;
  • Accept-Encoding: используется клиентом для уведомления сервера о форматах сжатия данных, которые он может принять, например: Accept-Encoding: gzip, compress, br. Затем сервер уведомит клиента о своем выборе через поле Content-Encoding. .
  • Accept-Language: используется клиентом для уведомления сервера о языках, которые он понимает, и о его принятии, например: Accept-Language: fr-CH, fr;q=0.9, en;q=0.8, de;q =0.7, *; q=0.5, после чего сервер уведомит клиента о своем выборе через поле Content-Language
  • Авторизация: заголовок запроса клиента содержит учетные данные, используемые сервером для аутентификации пользовательского агента.
  • Пропускная способность: используется для описания значения пропускной способности, доступной клиенту. Например: Пропускная способность: 4000.
  • Размер блока: это поле отправляется клиентом медиасерверу для запроса определенного размера медиапакета с сервера. Сервер может использовать меньшие размеры блока, чем запрошено. Этот размер пакета не включает заголовки низкого уровня, такие как IP, UDP или RTP.
  • CSeq : указывает порядковый номер ответа на запрос RTSP. Каждый запрос RTSP должен содержать уникальное значение CSeq, чтобы сервер мог правильно идентифицировать и обработать запрос. Этот порядковый номер увеличивается с сообщениями запроса. Ответ сервера должен иметь значение CSeq, указывающее, на какой запрос следует ответить.
  • Cache-Control: реализация механизма кэширования путем указания инструкций.Директивы кэширования являются односторонними, то есть директивы, установленные в запросе, не обязательно включаются в ответ.
  • Конференция: уведомите сервер о том, что идентификатор конференции того же сеанса RTSP не должен быть изменен.
  • Соединение: это поле определяет, будет ли сетевое соединение закрыто после завершения текущей транзакции. Если установлено значение «keep-alive», сетевое соединение является постоянным и не будет закрыто, поэтому запросы к тому же серверу могут продолжать выполняться при соединении или соединении: закрыть.
  • Длина контента : это поле указывает длину контента после двойного CRLF, следующего за последним заголовком протокола RTSP.Например, в ответе сервера DESCRIBE укажите длину информации sdp.
  • Тип содержимого: сообщает клиенту тип фактического возвращаемого контента.
  • Дата : предоставляет дату и время, когда сервер сгенерировал ответ, что помогает клиенту определить актуальность ответа или выполнить синхронизацию времени. Формат поля «Дата» соответствует RFC 1123, например: Сб, 6 апреля 2024 г., 11:15:00 по Гринвичу.
  • Пользователь-агент: это поле используется, чтобы позволить узлу сетевого протокола идентифицировать тип приложения, операционную систему, разработчика программного обеспечения и номер версии программного обеспечения пользовательского агента, инициировавшего запрос.
  • Срок действия: указывает срок действия.
  • Позвонил: используется для указания диапазона времени, вы можете использовать единицы времени SMPTE, NTP или часы.
  • Сессия : Поле заголовка сеанса идентифицирует сеанс RTSP. Идентификатор сеанса определяется сервером вSETUPВыбранный в ответе, как только клиент получит идентификатор сеанса, он будет включать идентификатор сеанса в сообщения запроса на будущую операцию для сеанса. Например: сеанс: 4581E0AE timeout=65;
  • Транспорт : Поле заголовка Transport содержит список параметров транспорта, приемлемых для клиента, включая транспортный протокол, порт адреса, TTL и т. д. Сервер также возвращает конкретную опцию, фактически выбранную через это поле заголовка. Например: Транспорт: RTP/AVP/TCPunicast;destination=192.168.31.222;source=192.168.31.222;interleaved=0-1.

Вставьте сюда описание изображения

🎄五、RTSP 流程抓包解析

Используйте 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 и ответ, использованные в предыдущем сообщении.

✨5.1, ВАРИАНТНЫЙ метод

Получите доступные методы с сервера:
Вставьте сюда описание изображения
Клиент отправляет метод OPTIONS и используетCSeq Чтобы указать порядковый номер запроса, используйтеUser-Agent идентифицировать своего агента;
Сервер ответит на запрос, используяCSeq Чтобы указать, на какой запрос идет ответ, используйтеDateукажите дату,PublicУказывает предоставленный метод.


✨5.2, ОПИСАЙТЕ метод

Получить с сервера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, возвращаемая сервером, будет проанализирована в следующей статье.


✨5.3, метод НАСТРОЙКИ

Клиент запрашивает сервер установить сеанс и подготовиться к передаче. Информация запроса в основном включает протокол передачи и номер порта клиента;

Вставьте сюда описание изображения
Клиент отправляет метод 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.


✨5.4, метод PLAY

Клиент активно уведомляет сервер о необходимости начать отправку данных, используя механизм, указанный SETUP.

Вставьте сюда описание изображения
Клиент отправляет метод PLAY и используетCSeq Чтобы указать порядковый номер запроса, используйтеUser-Agent указать своего агента,Sessionполе указывает идентификатор сеанса,RangeВ поле указывается время начала и окончания воспроизведения.

Сервер ответит на этот запрос, используя CSeq Укажите, на какой запрос идет ответ;Dateуказать дату;RangeВ поле указывается время начала и окончания воспроизведения;SessionПоле указывает идентификатор сеанса;RTP-InfoПоле описывает информацию RTP отправляемого кодового потока, такую ​​как seq и rtptime первого пакета RTP. Клиент может демультиплексировать на основе этого поля.


✨5.5, метод РАЗБОР

Клиент запрашивает прекращение отправки указанного потока URL-адресов и освобождение связанных ресурсов.
Вставьте сюда описание изображения
Клиент отправляет метод TEARDOWN и используетCSeq Чтобы указать порядковый номер запроса, используйтеUser-Agent указать своего агента,SessionПоле указывает идентификатор сеанса.

Сервер ответит на этот запрос, используя CSeq Укажите, на какой запрос идет ответ;DateУкажите дату.


Вставьте сюда описание изображения

🎄六、RTSP 响应错误码

Содержимое ответа RTSP обычно содержит трехзначный целочисленный код ответа и фразу причины. Целью фразы является предоставление краткого текстового описания кода состояния. Клиенту не нужно проверять или отображать фразу причины. По разнице между первой цифрой кода ответа его можно разделить на следующие пять категорий:

  • 1xx: Подсказка – запрос получен и находится в обработке.
  • 2xx: Успех – запрос успешно обработан.
  • 3xx: Перенаправление — для завершения запроса необходимо предпринять дальнейшие действия.
  • 4xx: Ошибка клиента — запрос содержал неправильные параметры или синтаксис, и запрос не мог быть выполнен.
  • 5xx: Ошибка сервера. Серверу не удалось выполнить правильный запрос клиента.

Конечно, коды ошибок 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