Compartilhamento de tecnologia

[Áudio e Vídeo | RTSP] Explicação detalhada do protocolo RTSP e análise de exemplos de captura de pacotes (detalhada sem entrar em detalhes)

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀
🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C 、数据结构、音视频🍭
🤣本文内容🤣:🍭介绍RTSP协议 🍭
😎金句分享😎:🍭你不能选择最好的,但最好的会来选择你——泰戈尔🍭
⏰Tempo de lançamento⏰: 06/07/2024 12:22:00

Este artigo não pode ser encaminhado sem permissão! ! !


Insira a descrição da imagem aqui

🎄一、概述

RTSP, nome completo Real Time Streaming Protocol, o protocolo de streaming em tempo real, é um protocolo da camada de aplicação no sistema de protocolo TCP/IP. É um padrão RFC IETF apresentado pela Columbia University, Netscape e RealNetworks.

O documento oficial sobre o protocolo RTSP é RFC2326, link do documento:RFC2326-Protocolo de transmissão em tempo real (RTSP)

A sintaxe e a operação do protocolo RTSP são referenciadas. HTTP/1.1, um protocolo baseado em texto que usa o conjunto de caracteres ISO10646 e codificação UTF-8, o protocolo da camada de transporte que transporta RTSP é;TCP, porta padrão554; Se for um túnel RTSP sobre HTTP, a porta TCP padrão é geralmente usada em conjunto com o protocolo RTP/RTCP, o protocolo RTP transmite dados de fluxo em tempo real e o protocolo RTCP completa a transmissão de fluxos de dados; comandos de controle.

Insira a descrição da imagem aqui

Protocolo RTP: nome completoReal-time Transport Protocol , o protocolo de transmissão em tempo real, foi anunciado pelo Grupo de Trabalho de Transmissão Multimídia da IETF em 1996 na RFC 1889. O protocolo RTP detalha o formato de pacote padrão para entrega de áudio e vídeo pela Internet. É construído no protocolo UDP.

Protocolo RTCP: nome completoReal-time Transport Control Protocol , Protocolo de controle de transporte em tempo real, usado com RTP. O RTP usa uma porta UDP de número par. O RTCP usa a próxima porta do RTP, que é uma porta de número ímpar. O RTCP e o RTP trabalham juntos. O RTP implementa a transmissão de dados reais e o RTCP é responsável por enviar pacotes de controle para todos na sessão. A sua principal função é fornecer feedback sobre a qualidade do serviço prestado pela RTP.

A diferença entre o protocolo RTSP e o protocolo HTTP:
O RTSP tem estado e seus comandos são sempre enviados em ordem, e um comando pode sempre precisar ser enviado antes de outro comando. HTTP não tem estado Depois que o protocolo envia um comando, a conexão será desconectada e não haverá dependência entre os comandos.
O protocolo rtsp usa a porta 554 e o http usa a porta 80.
As solicitações RTSP podem ser enviadas tanto pelo servidor quanto pelo cliente, enquanto as solicitações HTTP só podem ser enviadas pelo cliente.


Insira a descrição da imagem aqui

🎄二、RTSP 方法

Os métodos RTSP comumente usados ​​incluem: OPTIONS, DESCRIBE, SETUP, PLAY, PAUSE, TEARDOWN, ANNOUNCE, GET_PARAMETER e SET_PARAMETER, etc. As instruções detalhadas de uso são as seguintes:

  • OPTIONS : O cliente obtém do servidor o método suportado pelo servidor. Não afeta o estado do servidor;
  • DESCRIBE: O cliente obtém a descrição do objeto de mídia especificado pela URL do servidor, ondeAcceptO campo especifica o formato da descrição;
  • SETUP : o cliente solicita ao servidor que estabeleça uma sessão e se prepare para a transmissão. As informações da solicitação incluem principalmente o protocolo de transmissão e o número da porta do cliente;
  • PLAY : o cliente notifica ativamente o servidor para começar a enviar dados usando o mecanismo especificado por SETUP.emRangeO campo especifica o horário de início e término da reprodução (o intervalo do fluxo em tempo real geralmente éRange: npt=0.000-), quando várias solicitações PLAY chegarem, o servidor enfileirará as solicitações PLAY e as executará sequencialmente, ou seja, deverá aguardar a conclusão do primeiro tempo PLAY antes de continuar a processar a segunda mensagem PLAY.
  • PAUSE : o cliente solicita que o streaming de mídia do servidor seja temporariamente suspenso.capaz de passarRangeO parâmetro pausa em um ponto de tempo especificado ou você pode especificar um fluxo para pausar. Por exemplo, se você especificar um fluxo de áudio para pausar, a reprodução ficará silenciosa.
  • RECORD : RECORD notifica o servidor que o cliente iniciará a gravação dos dados da mídia conforme descrição anterior. emtimestamp Os campos refletem os horários de início e término (UTC). Se este campo não estiver presente, será utilizado o horário de início ou término da descrição da mídia. Se a sessão já tiver iniciado, a gravação começa imediatamente.
    O servidor decide se deseja armazenar os dados registrados emrequest-URI Próximo ou outro URI. Se o servidor não usar um URI de solicitação, a resposta deverá ser 201 (Criado) e conter um cabeçalho Entidade e Local descrevendo o status da solicitação e referenciando o novo recurso.
  • TEARDOWN: o cliente solicita a interrupção do envio do fluxo de URL especificado e a liberação de recursos relacionados.
  • REDIRECT : para redirecionar uma solicitação, o servidor notifica o cliente de que ele deve se conectar a outro local de servidor. Contém o cabeçalho Location obrigatório, que indica que o cliente deve fazer uma solicitação para esta URL. Pode conter o parâmetro Range, indicando quando o redirecionamento entrará em vigor. Se o cliente quiser continuar enviando ou recebendo mídia para esse URI, o cliente deverá emitir uma solicitação TEARDOWN para a sessão atual e um SETUP para a nova sessão no host especificado.
  • ANNOUNCE: Quando o cliente envia para o servidor, significa enviar ao servidor a descrição da apresentação ou objeto de mídia identificado pela URL de solicitação
    Quando o servidor envia ao cliente, significa notificar o cliente para atualizar as informações da sessão.
  • GET_PARAMETER :GET_PARAMETER solicitação para recuperar valores de parâmetros para a representação ou fluxo especificado no URI. O conteúdo das respostas e respostas é deixado para a implementação. GET_PARAMETER sem corpo de entidade pode ser usado para testar a atividade ("ping") de um cliente ou servidor.
  • SET_PARAMETER : Este método solicita a definição dos valores dos parâmetros do fluxo especificado de demonstração ou URL. As solicitações devem conter apenas um único parâmetro, permitindo ao cliente decidir por que uma solicitação específica falhou. Se a solicitação contiver vários parâmetros, todos os parâmetros poderão ser definidos com sucesso e o servidor deverá agir apenas de acordo com essa solicitação. O servidor deve permitir que os parâmetros sejam definidos repetidamente com o mesmo valor, mas não alterar o valor do parâmetro. Nota: Os parâmetros de streaming de mídia devem ser definidos usando o comando SETUP. É benéfico para os firewalls limitar os parâmetros de transferência de configuração para SETUP.

Um total de 11 métodos RTSP são apresentados acima, entre os quais,SETUPPLAYTEARDOWN Os três comandos são necessários no processo RTSP e outros métodos não são necessários.eANNOUNCEGET_PARAMETERSET_PARAMETEROs três comandos podem ser enviados do cliente para o servidor ou do servidor para o cliente. Os demais comandos são enviados do cliente para o servidor.


Insira a descrição da imagem aqui

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

O RTSP possui dois tipos de mensagens: mensagens de solicitação e mensagens de resposta. A mensagem de solicitação refere-se à mensagem de solicitação enviada do cliente para o servidor, e a mensagem de resposta refere-se à resposta do servidor para o cliente.

✨3.1, mensagem de solicitação RTSP

A mensagem de solicitação RTSP consiste em três partes: linha de solicitação, cabeçalho da solicitação e corpo da solicitação. Dentre eles, a linha de solicitação é obrigatória, enquanto o cabeçalho e o corpo da solicitação são opcionais dependendo da situação específica.
Insira a descrição da imagem aqui

  • Linha de solicitação: A linha de solicitação consiste em um método, um URI de solicitação e uma versão do protocolo separados por espaços e precedidos por CRLF (ou seja:rn)Terminar.
    方法 : É o método RTSP apresentado acima. Incluindo OPÇÕES, DESCRIÇÃO, CONFIGURAÇÃO, REPRODUÇÃO, PAUSA, DESMONTAGEM, etc.
    请求URI: identifica o recurso de mídia a ser operado, geralmente no formato rtsp://example.com/path/to/stream.
    协议版本: Indica a versão do protocolo RTSP que a requisição segue, geralmenteRTSP/1.0ouRTSP/2.0
    Aqui está um exemplo de uma linha de solicitação completa:
    OPTIONS rtsp://192.168.3.225:554/wbc RTSP/1.0
    
  • Cabeçalho da solicitação: O cabeçalho da solicitação contém algumas informações adicionais, como: CSeq (número de sequência usado para identificar a solicitação), Session ID (identificador da sessão), Transporte (protocolo de transporte), etc. Cada campo de cabeçalho consiste em um nome de campo, dois pontos e um valor de campo, e cada campo de cabeçalho é separado por CRLF.
    Aqui está um exemplo de um cabeçalho de solicitação completo:
    CSeq: 2
    User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
    
  • Corpo da solicitação: o corpo da solicitação é usado para transmitir dados adicionais. O conteúdo específico do corpo da solicitação depende do método RTSP usado na linha da solicitação. Nota: Após o cabeçalho da solicitação, uma linha em branco (CRLF) precisa ser inserida para distinguir o cabeçalho da solicitação do corpo da solicitação. A maioria das mensagens de solicitação não possui corpo de solicitação.

✨3.2, mensagem de resposta RTSP

A mensagem de solicitação RTSP consiste em três partes: linha de status, cabeçalho de resposta e corpo da resposta. Entre eles, a linha de status é obrigatória, enquanto o cabeçalho e o corpo da resposta são opcionais dependendo da situação específica.
Insira a descrição da imagem aqui

  • Linha de status: A linha de status contém uma versão do protocolo, um código de status e um texto de status, separados por espaços e terminados por CRLF (ou seja: "rn").
    协议版本: indica a versão do protocolo RTSP que a resposta segue, geralmente RTSP/1.0 ou RTSP/2.0.
    状态码 : Três dígitos, como: 200, 401, 500, etc., utilizados para indicar o resultado do processamento da solicitação. O primeiro dígito representa a categoria de resposta: 2xx indica sucesso, 4xx indica erro do cliente e 5xx indica erro do servidor.
    状态文本: uma breve descrição de texto explicando o significado específico do código de status correspondente, como: OK, Não autorizado, etc.
    Aqui está um exemplo de linha de resposta:
    RTSP/1.0 200 OK
    
  • Cabeçalho de resposta: O cabeçalho de resposta contém informações semelhantes ao cabeçalho da solicitação, como: CSeq (número de sequência usado para identificar a solicitação), Session ID (identificador da sessão), Transporte (protocolo de transporte), etc. O formato de cada campo do cabeçalho de resposta é o mesmo do cabeçalho da solicitação, portanto não entraremos em detalhes aqui.
    CSeq: 2
    Date: Wed, Feb 04 1970 03:25:10 GMT
    Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
    
  • Corpo de resposta: Algumas respostas RTSP (como DESCRIBE) podem conter um corpo de resposta para transmissão de dados adicionais.Nota: Após o cabeçalho da resposta, uma linha em branco (CRLF) precisa ser inserida paraDistinguir entre cabeçalhos de resposta e corpo de resposta
    Abaixo está um exemplo de um corpo de resposta completo.
    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
    

Insira a descrição da imagem aqui

🎄四、RTSP 报文的常用字段

O cabeçalho de resposta da mensagem RTSP conterá alguns campos. A seguir estão alguns campos comumente usados:

  • Aceitar : usado para especificar o tipo de estrutura de dados da entidade que o cliente informa ao servidor para aceitar. Por exemplo: Accept: application/sdp, então o servidor retorna seu tipo de estrutura de dados entidade através do campo Content-Type;
  • Accept-Encoding: Usado pelo cliente para notificar o servidor sobre os formatos de compactação de dados que ele pode aceitar, por exemplo: Accept-Encoding: gzip, compress, br O servidor então notificará o cliente sobre sua escolha através do campo Content-Encoding. .
  • Accept-Language: utilizado pelo cliente para notificar o servidor sobre os idiomas que ele pode compreender e sua aceitação, por exemplo: Accept-Language: fr-CH, fr;q=0.9, en;q=0.8, de;q =0,7, *; q=0,5, após o qual o servidor notificará o cliente de sua escolha através do campo Content-Language
  • Autorização: O cabeçalho da solicitação do cliente contém as credenciais usadas pelo servidor para autenticar o agente do usuário.
  • Largura de banda: Usado para descrever o valor da largura de banda disponível para o cliente. Por exemplo: Largura de banda: 4000
  • Blocksize: Este campo é enviado pelo cliente ao servidor de mídia para solicitar um tamanho de pacote de mídia específico do servidor, o servidor está livre para usar tamanhos de bloco menores do que o solicitado. Este tamanho de pacote não inclui cabeçalhos de baixo nível, como IP, UDP ou RTP
  • CSeq : especifica o número de sequência da resposta da solicitação RTSP. Cada solicitação RTSP deve conter um valor CSeq exclusivo para que o servidor possa identificar e processar corretamente a solicitação. Este número de sequência é incrementado com mensagens de solicitação. A resposta do servidor deve ter um valor CSeq indicando a qual solicitação responder.
  • Cache-Control: Implemente o mecanismo de cache especificando instruções.As diretivas de cache são unidirecionais, o que significa que as diretivas definidas na solicitação não são necessariamente incluídas na resposta
  • Conferência: Notifique o servidor que o ID da conferência da mesma sessão RTSP não deve ser alterado
  • Conexão: Este campo determina se a conexão de rede será encerrada após a conclusão da transação atual. Se o valor for "keep-alive", a conexão de rede é persistente e não será fechada, para que as solicitações ao mesmo servidor possam continuar a ser concluídas na conexão ou Conexão: fechar.
  • Comprimento do conteúdo : Este campo indica o comprimento do conteúdo após o duplo CRLF seguindo o último cabeçalho do protocolo RTSP.Por exemplo, na resposta do servidor DESCRIBE, especifique o comprimento da informação sdp
  • Tipo de conteúdo: informa ao cliente o tipo de conteúdo real retornado
  • Data : fornece a data e a hora em que o servidor gerou a resposta, o que ajuda o cliente a determinar a atualização da resposta ou a executar a sincronização de horário. O formato do campo Data está em conformidade com RFC 1123, por exemplo: Sábado, 06 de abril de 2024 11:15:00 GMT.
  • Agente de usuário: Este campo é usado para permitir que o peer do protocolo de rede identifique o tipo de aplicativo, sistema operacional, desenvolvedor de software e número de versão do software do agente do usuário que iniciou a solicitação.
  • Expira: especifica o tempo de expiração
  • Tocou: Usado para especificar um intervalo de tempo, você pode usar SMPTE, NTP ou unidade de tempo do relógio.
  • Sessão :O campo do cabeçalho da sessão identifica uma sessão RTSP. O ID da sessão é determinado pelo servidor emSETUPSelecionado na resposta, assim que o cliente obtiver o ID da Sessão, ele incluirá o ID da Sessão em futuras mensagens de solicitação de operação para a Sessão. Por exemplo: Sessão: 4581E0AE;
  • Transporte : O campo do cabeçalho Transporte contém uma lista de opções de transporte aceitáveis ​​para o cliente, incluindo protocolo de transporte, porta de endereço, TTL, etc. O servidor também retorna a opção específica realmente selecionada através deste campo de cabeçalho. Por exemplo: Transporte: RTP/AVP/TCPunicast;destino=192.168.31.222;fonte=192.168.31.222;intercalado=0-1

Insira a descrição da imagem aqui

🎄五、RTSP 流程抓包解析

Use o wireshark para capturar os pacotes de rede da mídia de streaming RTSP. Você pode ver que o processo geral é o seguinte:
1. Cliente enviaOPTIONSMétodo, resposta do servidor;
2. Cliente enviaDESCRIBEMétodo, resposta do servidor;
3. Cliente enviaSETUPMétodo, resposta do servidor;
2. Cliente enviaPLAYMétodo, resposta do servidor;
2. Cliente enviaTEARDOWNMétodo, resposta do servidor;
Insira a descrição da imagem aqui
O pacote de fluxo completo é o seguinte:

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

A seguir analisaremos cada método RTSP e resposta usado na mensagem anterior.

✨5.1, método OPÇÃO

Obtenha os métodos disponíveis do servidor:
Insira a descrição da imagem aqui
O cliente envia o método OPTIONS e usaCSeq Para especificar o número de sequência da solicitação, useUser-Agent identificar o próprio agente;
O servidor responderá à solicitação usandoCSeq Para indicar qual solicitação está sendo respondida, useDateespecifique a data,PublicEspecifica o método fornecido.


✨5.2, método DESCREVER

Obter do servidorrtsp://192.168.3.225:554/wbcuma descrição do objeto de mídia, ondeAcceptO campo especifica o formato da descrição:

Insira a descrição da imagem aqui
O cliente envia o método DESCRIBE e usaCSeq Para especificar o número de sequência da solicitação, useUser-Agent identifique seu agente,AcceptO campo especifica o formato da descrição como SDP;

O servidor responderá a esta solicitação usando CSeq Para indicar qual solicitação está sendo respondida, useDateespecifique a data,Content-TypeIndica que o tipo de conteúdo é SDP,Content-LengthEspecifique o comprimento do conteúdo.

Perceber
1. Para alguns que exigem nome de usuário e senha, o servidor processará o método DESCRIBE para autenticação. Se as informações de autenticação da Autorização não forem transportadas ou a autenticação falhar, o servidor retornará uma resposta com o número de erro 401. Quando o cliente receber a resposta 401, ele precisará gerar a Autorização com base nas informações de autenticação do usuário conhecidas e enviar a descrição novamente. Se a autenticação for bem-sucedida, o servidor retornará informações de resposta transportando SDP.
2. As informações SDP retornadas pelo servidor serão analisadas em artigo posterior.


✨5.3, método SETUP

O cliente solicita ao servidor que estabeleça uma sessão e se prepare para a transmissão. As informações da solicitação incluem principalmente o protocolo de transmissão e o número da porta do cliente;

Insira a descrição da imagem aqui
O cliente envia o método SETUP e usaCSeq Para especificar o número de sequência da solicitação, useUser-Agent identifique seu agente,TransportO campo especifica o protocolo de transmissão RTP/AVP e a porta aceitáveis ​​(aqui a porta RTP é 55320 e a porta RTCP é 55321);

O servidor responderá a esta solicitação usando CSeq Para indicar qual solicitação está sendo respondida, useDateespecifique a data,TransportEspecifique o protocolo de transporte RTP/AVP, endereço de destino, endereço de origem, porta do cliente (RTP é 55320, RTCP é 55321), porta do servidor (RTP é 6970, RTCP é 6971),SessionEspecifique o ID da sessão.

Perceber
Neste exemplo, o RTP é transmitido através do protocolo UDP. Às vezes, o RTP será transmitido através do TCP, então.Transport Os campos irão variar. Pode ser o seguinte:

客户端请求:Transport: RTP/AVP/TCP;unicast;interleaved=0-1
服务器响应:Transport: RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=24e4e500;mode="play"

RTP/AVP/TCPIndica que o fluxo RTP é transmitido através de TCP. Quando este valor aparece, a mensagem não possui o campo client_port;
interleaved=0-1Representa streamid, identificando RTP streamid=0;
Quando o fluxo de código é transmitido através do TCP, ele compartilha um link TCP com o RTSP, portanto não precisa estabelecer uma nova conexão. Para distinguir os protocolos RTP, RTCP e RTSP, é necessário adicionar um identificador de cabeçalho. O campo de cabeçalho é usado aqui, e a seção tcphead tem quatro palavras, o formato é o seguinte:

| magic number | channel number | embedded data length | data |

magic number: 1 byte, fixo em0x24, é um personagem$, indicando que os dados que estão sendo transmitidos não são o protocolo rtsp;
channel number: 1 byte, ID do canal, identificando o tipo de stream, que é o streamid mencionado anteriormente;
embedded data length : 2 bytes, indicando o comprimento do fluxo
data: Indica dados de pacote RTP/RTCP


✨5.4, método PLAY

O cliente notifica ativamente o servidor para começar a enviar dados usando o mecanismo especificado por SETUP.

Insira a descrição da imagem aqui
O cliente envia o método PLAY e usaCSeq Para especificar o número de sequência da solicitação, useUser-Agent identifique seu agente,Sessioncampo especifica o ID da sessão,RangeO campo especifica o horário de início e término da reprodução.

O servidor responderá a esta solicitação usando CSeq Indique qual solicitação está sendo respondida;Dateespecifique a data;RangeO campo especifica o horário de início e término da reprodução;SessionO campo especifica o ID da sessão;RTP-InfoO campo descreve as informações RTP do fluxo de código a ser enviado, como o seq e o rtptime do primeiro pacote RTP. O cliente pode demultiplexar com base neste campo.


✨5.5, método TEARDOWN

O cliente solicita a interrupção do envio do fluxo de URL especificado e a liberação de recursos relacionados.
Insira a descrição da imagem aqui
O cliente envia o método TEARDOWN e usaCSeq Para especificar o número de sequência da solicitação, useUser-Agent identifique seu agente,Sessioncampo especifica o ID da sessão.

O servidor responderá a esta solicitação usando CSeq Indique qual solicitação está sendo respondida;DateEspecifique a data.


Insira a descrição da imagem aqui

🎄六、RTSP 响应错误码

O conteúdo da resposta do RTSP geralmente contém um código de resposta inteiro de 3 dígitos e uma frase de razão. O objetivo da frase é fornecer uma breve descrição de texto do código de status. O cliente não precisa verificar ou exibir a frase de razão. De acordo com a diferença entre o primeiro dígito do código de resposta, ele pode ser dividido nas cinco categorias a seguir:

  • 1xx: Dica – a solicitação foi recebida e está sendo processada
  • 2xx: Sucesso – a solicitação foi processada com sucesso
  • 3xx: Redirecionamento - outras ações devem ser tomadas para concluir a solicitação
  • 4xx: Erro do cliente – A solicitação continha parâmetros ou sintaxe incorretos e a solicitação não pôde ser atendida.
  • 5xx: Erro do servidor – O servidor não conseguiu atender à solicitação correta do cliente

Obviamente, os códigos de erro RTSP e os métodos RTSP estão fortemente relacionados. Alguns erros só podem ser acionados em métodos específicos.

Erro de códigofrase de razãométodo de resposta
100ContinuarTodos
200SucessoTodos
201CriadaREGISTRO
250Pouco espaço de armazenamentoREGISTRO
300Escolhas múltiplasTodos
301Movido PermanentementeTodos
302Movido TemporariamenteTodos
303Ver outrosTodos
305Usar proxyTodos
400Pedido ruimTodos
401Não autorizadoTodos
402Pagamento RequeridoTodos
403ProibidoTodos
404Não encontradoTodos
405Método não permitidoTodos
406Não aceitávelTodos
407Autenticação de proxy necessáriaTodos
408Solicitar tempo limiteTodos
410PerdidoTodos
411Comprimento necessárioTodos
412Pré-condição falhou DESCREVACONFIGURAR
413Solicitação de entidade muito grandeTodos
414Request-URI muito longoTodos
415Tipo de mídia não suportadoTodos
451Parâmetro inválidoCONFIGURAR
452Identificador de conferência ilegalCONFIGURAR
453Não há largura de banda suficienteCONFIGURAR
454Sessão não encontradaTodos
455Método não válido neste estadoTodos
456Campo de cabeçalho inválidoTodos
457Intervalo inválidoJOGAR
458O parâmetro é somente leituraCONJUNTO_PARÂMETRO
459Operação agregada não permitidaTodos
460Somente operação agregada permitidaTodos
461Transporte sem suporteTodos
462Destino inalcançávelTodos
500Erro do Servidor InternoTodos
501Não implementadoTodos
502Gateway ruimTodos
503Serviço não disponívelTodos
504Tempo limite do gatewayTodos
505Versão RTSP não suportadaTodos
551Opção não suportadaTodos

Insira a descrição da imagem aqui
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁

referir-se:
Protocolo de streaming em tempo real – RTSP [explicação detalhada]
Domine solicitações e respostas RTSP do zero 1
Explicação detalhada do protocolo de streaming de mídia RTSP