Pesquisa em tecnologia de mídia de streaming em tempo real baseada em protocolo de transmissão de dados RTMP (artigo completo)

Este artigo foi extraído do artigo "Princípios e Aplicações da Tecnologia de Streaming Media Baseada no Protocolo RTMP". O artigo estuda os princípios e aplicações do protocolo RTMP usado em sistemas de streaming media baseados na plataforma Flash e discute os vários métodos de transmissão de dados reais. mídia de streaming de tempo na rede. As vantagens e desvantagens são analisadas. Em seguida, analisa as características da tecnologia de streaming media com base no protocolo RTMP e apresenta o formato da mensagem do protocolo RTMP. Finalmente, um sistema de streaming ao vivo baseado no protocolo RTMP é implementado.

Para desenvolvedores de mensagens instantâneas, as teorias e ideias relevantes no artigo são as mesmas para o estudo de soluções de transmissão de dados em tecnologia de áudio e vídeo em tempo real de mensagens instantâneas (chamadas de áudio e vídeo em tempo de vídeo de aplicativos de bate-papo IM). Significado da referência, espero lhe trazer alguma inspiração.
Abstrato

Este artigo apresenta o princípio e a aplicação do protocolo RTMP usado no sistema de streaming de mídia baseado na plataforma Flash. Em primeiro lugar, são analisadas as vantagens e desvantagens de vários métodos de transmissão de mídia streaming na rede. Em seguida, analisa as características da tecnologia de streaming media com base no protocolo RTMP e apresenta o formato da mensagem do protocolo RTMP. Finalmente, um sistema de streaming ao vivo baseado no protocolo RTMP é implementado.

1. Introdução

Nos últimos anos, com o aumento da largura de banda da rede e o desenvolvimento da tecnologia de codificação de compressão multimídia, a tecnologia de streaming media tem sido amplamente utilizada. O mercado global de streaming media está se desenvolvendo a uma velocidade extremamente alta e gradualmente substituindo a Internet tradicional baseada em texto e imagens. De acordo com as estatísticas do VisualNetworkingIndex (VNI) da Cisco, o tráfego de streaming media representou apenas 5% do tráfego total da Internet global em 2005, e em 2011 essa proporção aumentou para 40%, e espera-se que essa proporção aumente ainda mais para 62 em 2015.%. Ao mesmo tempo, a tecnologia de streaming media rompeu as limitações dos computadores e entrou nos campos dos tablets e smartphones, e uma era do Video Every Where está por vir [1].

Neste ambiente de rápido desenvolvimento de streaming media, estações de TV e provedores de serviços de vídeo em vários lugares começaram seus próprios negócios de streaming media. Ao construir uma plataforma de negócios, como escolher uma plataforma de streaming de mídia adequada torna-se uma questão crucial. China Internet TV, China Educacional TV, Henan TV, Shenzhen TV e muitas outras estações de TV, bem como Liujianfang, Qiyi.com, Weishi.com e outros provedores de serviços de streaming de mídia escolheram o sistema de streaming de mídia baseado na plataforma Flash da Adobe. O protocolo RTMP [2] utilizado pelo sistema para transmissão de dados tem sido amplamente utilizado. Este artigo irá analisar suas características em detalhes e construir um sistema de streaming ao vivo baseado no protocolo RTMP.

[Benefícios do artigo] O editor recomenda meu próprio grupo de intercâmbio de linguagem linuxC / C ++: 832218493. Compilei alguns livros didáticos, materiais de vídeo e alguns códigos-fonte que acho melhor compartilhar neles e você pode adicioná-los se precisar deles ! ~
Insira a descrição da imagem aqui
Mais artigos e vídeos excelentes na conta pública
Insira a descrição da imagem aqui

2 streaming

Os atuais serviços de streaming de mídia na Internet podem ser divididos em dois modos em termos de métodos de transmissão: streaming sequencial e streaming em tempo real.

1 Streaming sequencial

O streaming sequencial usa um servidor HTTP comum como servidor para armazenar arquivos multimídia. Quando o cliente inicia uma conexão e deseja assistir aos recursos de multimídia, ele baixa o arquivo diretamente para a pasta temporária do sistema local do cliente por meio do protocolo HTTP e usa o reprodutor para reproduzir o arquivo baixado. Sua interação com o servidor é mostrada na figura abaixo.

A essência do streaming sequencial é reproduzir arquivos locais. O streaming sequencial tem sido amplamente usado no momento: YouTube, Youku, Tudou e outros provedores de serviços de vídeo adotaram este método para fornecer serviços multimídia. A vantagem do streaming sequencial é principalmente reduzir a pressão sobre o servidor, ou seja, quando o arquivo multimídia é baixado, ele pode ser desconectado, economizando recursos do servidor e atendendo outros clientes. Além disso, o streaming sequencial usa um servidor HTTP comum, e os provedores de serviços de vídeo não precisam gastar dinheiro extra para comprar servidores de streaming de mídia, economizando uma quantia em dinheiro.
O streaming sequencial é mostrado na figura abaixo:
Insira a descrição da imagem aqui
2 Streaming em tempo real

O streaming em tempo real usa um servidor de streaming de mídia dedicado para armazenar arquivos multimídia. Quando o cliente inicia uma conexão e deseja assistir a recursos de multimídia, os dados de multimídia localizados no servidor de streaming de mídia geralmente são transmitidos diretamente para o player do cliente por meio de um protocolo de streaming em tempo real proprietário e, em seguida, reproduzidos em tempo real. O fluxo de sua interação com o servidor é mostrado na figura abaixo.

A aplicação de streaming em tempo real ainda está em estágio de desenvolvimento e é usada principalmente em webcasts ao vivo e filmes originais sob demanda. Ao usar streaming em tempo real para assistir a recursos multimídia, uma vez que os arquivos não serão baixados localmente, pode evitar que o conteúdo do provedor de vídeo e áudio seja copiado ilegalmente, protegendo assim os direitos autorais do conteúdo de vídeo e áudio. Além disso, quando você usa streaming em tempo real para assistir a recursos de multimídia, pode pular para qualquer posição do vídeo e áudio à vontade, em vez de apenas assistir a parte baixada como streaming sequencial, o que aumenta muito o tempo de visualização Graus de liberdade .

O streaming em tempo real é mostrado abaixo:
Insira a descrição da imagem aqui

3 Streaming em tempo real

A transmissão de dados de mídia no sistema de mídia de streaming requer o suporte do protocolo de streaming em tempo real correspondente. O protocolo de streaming em tempo real pertence ao protocolo da camada de aplicativo na estrutura do sistema de cinco camadas Internet TCP / IP. Na Internet atual, muitos padrões de protocolo de streaming em tempo real pertencem à empresa, portanto, essas especificações de protocolo não são públicas. Atualmente, existem vários protocolos de streaming em tempo real padronizados publicamente:

1RTSP + RTP

O RTSP foi proposto pelo IETF (Internet Engineering Task Force) [3]. O nome completo do protocolo RTSP é Real Time Streaming Protocol, ou seja, o protocolo de streaming em tempo real, que é um padrão RFC da IETF.

O RTSP é usado para controlar a transmissão de mídia de streaming, como estabelecer uma conexão, reproduzir, pausar, etc., mas não transmite dados de multimídia por si só. Os dados multimídia são geralmente transmitidos usando o protocolo RTP / RTCP. O nome completo do protocolo RTP / RTCP é Protocolo de transporte em tempo real / Protocolo de controle de transporte em tempo real, que também é o padrão RFC da IETF, especialmente usado para transmitir dados multimídia.

Embora RTSP + RTP seja uma combinação de padrões internacionais, não foi capaz de "dominar o mundo" no mundo da Internet. Isso tem muito a ver com o ambiente da Internet.

O RTP / RTCP é utilizado como protocolo de rede para transmissão de dados multimídia.Geralmente, o protocolo UDP é utilizado como protocolo de rede de sua camada de transporte [3]. O UDP não tem conexão e não oferece entrega confiável. Portanto, quando os dados são transmitidos na Internet (especialmente WAN), é fácil causar perda de pacotes, atrasos, jitter e outros problemas. Os dados multimídia têm altos requisitos para perda de pacotes, atraso e jitter. Um pequeno problema afetará muito a qualidade da experiência do usuário (QoE) [4]. Portanto, não há muitas mídias de streaming que usam transmissão RTSP + RTP na Internet.

No entanto, há exceções. Hoje em dia, o bate-papo de áudio e vídeo em tempo real nas mensagens instantâneas convencionais (ou seja, o aplicativo de bate-papo IM) usa mais esse componente. A razão é que o bate-papo de áudio e vídeo em tempo real é diferente da cena de a reprodução do filme, e o tempo real está mais do que completo. Importante, quando a rede não está boa, você pode carregá-la por um tempo, e o usuário pode esperar, mas isso é um tabu no bate-papo de áudio e vídeo em tempo real. Felizmente, quando a rede está ruim em bate-papo de áudio e vídeo em tempo real, a perda de quadros de imagem não é. Haverá um impacto substancial, portanto, para eficiência e experiência em tempo real, o método UDP de RTP / RTCP é o oposto, mas ao melhor.

Diferente de streaming media transmitido na Internet, a IPTV geralmente usa RTSP + RTP para transmitir dados multimídia [5]. Como o IPTV geralmente usa transmissão de rede privada, a condição da rede é boa e há poucos problemas, como perda de pacotes, atraso, jitter, etc., e as regras de protocolo simples do UDP podem melhorar muito a eficiência de transmissão, então você pode usar RTSP + RTP Transmissão em modo "com confiança".

2MMS

MMS foi proposto pela Microsoft Corporation. O nome completo do protocolo MMS é o protocolo Microsoft Media Server, ou seja, Microsoft Media Service Protocol, que é usado para acessar o conteúdo no ponto de publicação do Windows Media.

3HLS

HLS foi proposto pela Apple. O nome completo de HLS é HTTP Live Streaming, que é um protocolo de streaming em tempo real baseado em HTTP, que pode realizar streaming de mídia ao vivo e sob demanda. É usado principalmente no sistema iOS para fornecer áudio e vídeo ao vivo e on- demandam soluções para dispositivos iOS (como iPhone e iPad).

4RTMP

RTMP foi proposto pela Adobe. O nome completo do protocolo RTMP é Real Time Messaging Protocol, ou seja, protocolo de mensagens em tempo real, que é usado para transferir vídeo, áudio e dados entre plataformas Flash. Diferente da forma como a combinação RTSP + RTP fornece serviços de mídia de streaming, o protocolo RTMP em si pode não apenas transmitir dados multimídia, mas também controlar a reprodução de multimídia.

O protocolo RTMP usa o protocolo TCP como protocolo de rede de sua camada de transporte. O TCP é orientado à conexão [3] e fornece um protocolo de entrega confiável, de forma que não haverá perda de pacotes ao transmitir na Internet, garantindo assim a experiência do usuário (QoE). No entanto, o preço da entrega confiável fornecida pelo protocolo TCP é que ele adiciona alguma sobrecarga e ocupa alguns recursos de largura de banda e processador. Com o aumento da largura de banda da rede e o desenvolvimento de hardware de computador, esses gastos se tornarão cada vez mais insignificantes. Portanto, o protocolo RTMP tem uma boa perspectiva de desenvolvimento no futuro.

4 Recursos de sistemas baseados em RTMP

Muitas estações de TV na Internet e provedores de serviços de mídia de streaming escolhem o protocolo RTMP como seu protocolo de camada de aplicativo para serviços de mídia de streaming porque ele possui as seguintes características: Nenhum programa cliente é necessário para garantir a qualidade da transmissão de mídia.

1 Não há necessidade de instalar o programa cliente

Não há necessidade de instalar programas cliente para assistir streaming de mídia fornecida pelo protocolo RTMP, o que simplifica muito a complexidade das operações do cliente. Geralmente, assistir streaming de mídia requer o suporte do software cliente correspondente, e os usuários devem baixar o software correspondente (ou plug-in) para assistir streaming de mídia. O cliente de streaming de mídia que oferece suporte ao protocolo RTMP pode ser transformado em um arquivo Flash comum, desde que o navegador da web com o Flash Player instalado possa baixar automaticamente o arquivo e executá-lo. E o Flash Player é um plug-in necessário para acesso à Internet. Segundo as estatísticas, 98% dos navegadores da web no mundo possuem o Flash Player instalado. Portanto, os usuários comuns não precisam de nenhuma operação, desde que abram a página de reprodução com um navegador da web, eles podem assistir a mídia streaming [6].

2 Qualidade de transmissão de mídia garantida

O protocolo RTMP garante com eficácia a qualidade da transmissão de mídia e permite que os usuários assistam a multimídia de alta qualidade. O RTMP usa o protocolo TCP como seu protocolo de camada de transporte para evitar a perda de qualidade causada pela perda de dados multimídia no processo de transmissão WAN. Além disso, o método de codificação de vídeo H.264 suportado pelo formato de encapsulamento FLV transmitido pelo protocolo RTMP pode exibir imagens de boa qualidade a uma taxa de bits muito baixa, o que é muito adequado para assistir streaming de mídia quando a largura de banda da rede é insuficiente.

5 especificação RTMP

Formato de protocolo padrão 1RTMP

O protocolo RTMP é um protocolo de camada de aplicativo na arquitetura de cinco camadas TCP / IP da Internet. A unidade básica de dados no protocolo RTMP é chamada de mensagem. Quando o protocolo RTMP transmite dados na Internet, a mensagem é dividida em unidades menores chamadas Chunk.

Mensagem: uma
mensagem é a unidade de dados básica no protocolo RTMP. Diferentes tipos de mensagens contêm diferentes IDs de tipo de mensagem, que representam diferentes funções. Um total de mais de dez tipos de mensagens são especificados no protocolo RTMP, cada um desempenhando uma função diferente. Por exemplo, mensagens com IDs de tipo de mensagem 1 a 7 são usadas para controle de protocolo.Essas mensagens são geralmente usadas pelo próprio protocolo RTMP para gerenciamento e os usuários geralmente não precisam manipular os dados nelas. Mensagens com ID de tipo de mensagem 8 e 9 são usadas para transmitir dados de áudio e vídeo, respectivamente. Mensagens com Message Type ID 15-20 são utilizadas para enviar comandos de codificação AMF [8], responsáveis ​​pela interação entre o usuário e o servidor, como play, pause, etc. O cabeçalho da mensagem (Message Header) consiste em quatro partes: Message Type ID para marcar o tipo de mensagem, Payload Length para marcar o comprimento da mensagem, Timestamp para marcar o timestamp e Stream ID para marcar o stream de mídia ao qual a mensagem pertence . A estrutura da mensagem é mostrada na figura abaixo.
Insira a descrição da imagem aqui
Bloco de mensagem:
ao transmitir dados na rede, a mensagem precisa ser dividida em blocos de dados menores para ser adequada para transmissão no ambiente de rede correspondente. É estipulado no protocolo RTMP que uma mensagem é dividida em Chunks quando é transmitida na rede. O Chunk Header consiste em três partes: Chunk Basic Header usado para identificar este bloco, Chunk Message Header usado para identificar a mensagem à qual esta carga de bloco pertence e Extended Timestamp que aparece apenas quando o timestamp estourou. A estrutura da mensagem do bloco de mensagem é mostrada na figura abaixo. Insira a descrição da imagem aqui
Bloco de mensagens:
No processo de divisão da mensagem em vários blocos de mensagem, a parte do corpo da mensagem é dividida em blocos de dados de tamanho fixo (o padrão é 128 bytes e o último bloco de dados pode ser menor que o comprimento fixo), e no cabeçalho Adicionar o cabeçalho do bloco para formar o bloco de mensagem correspondente. O processo do bloco de mensagens é mostrado na figura abaixo: Uma mensagem com tamanho de 307 bytes é dividida em blocos de mensagens de 128 bytes (exceto o último).
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
No processo de transmissão de dados de mídia RTMP, o remetente primeiro encapsula os dados de mídia em mensagens, depois divide as mensagens em blocos de mensagens e, finalmente, envia os blocos de mensagens divididos por meio do protocolo TCP. Depois de receber os dados por meio do protocolo TCP, o receptor primeiro remonta o bloco de mensagem em uma mensagem e, em seguida, pode recuperar os dados de mídia desencapsulando a mensagem.

2 métodos de conexão

O protocolo RTMP estipula que duas estruturas lógicas precisam ser criadas antes de publicar um fluxo de mídia: a primeira etapa é estabelecer uma conexão de rede (conexão de rede); a segunda etapa é estabelecer um fluxo de rede (NetStream) com base na conexão de rede . Entre eles, a conexão de rede representa a conexão básica entre o servidor e o cliente, o fluxo de rede representa a conexão de envio de dados multimídia, mas muitos fluxos de rede podem ser criados a partir desta conexão. Eles são baseados no canal. Apenas um relacionamento de rede pode ser estabelecido entre o servidor e o cliente, conforme mostrado na figura a seguir:
Insira a descrição da imagem aqui

6 Construção de sistema de transmissão ao vivo baseado em RTMP

1 estrutura de sistema

Este artigo implementará um sistema de streaming ao vivo baseado no protocolo RTMP. Um sistema completo de transmissão ao vivo de streaming media inclui as seguintes partes: fonte de vídeo, servidor de streaming media e cliente A composição do sistema é mostrada na figura abaixo. A fonte de vídeo publica os dados de vídeo no servidor de streaming de mídia por meio do protocolo RTMP; depois que o vídeo é publicado com êxito, o cliente se conecta ao servidor de streaming de mídia por meio de RTMP e o vídeo correspondente pode ser reproduzido. Entre eles, a fonte de vídeo e o cliente são ambos programas Flash escritos em linguagem ActionScript [10], e o servidor de streaming media usa o software Flash Media Server da Ado-be.
Insira a descrição da imagem aqui
2 Fonte de vídeo

A fonte de vídeo é um aplicativo que fornece streaming de vídeo. Este sistema usa um programa Flash escrito em código ActionScript como fonte de vídeo. Este programa coleta os dados da câmera da máquina, compacta os dados e usa o protocolo RTMP para publicar os dados no aplicativo correspondente (Aplicativo) do servidor de streaming de mídia.

Aqui está uma breve introdução ao significado do código importante da parte da fonte do vídeo:

// 建立一个 RTMP 网络连接
var nc: NetConnection = new NetConnection( ) ; 
//连接到 IP 为 222. 31. 64. 249 的流媒体服务器上名字为 publishlive 的应用程序 
nc.connect("rtmp://222.31.64.249/publish-live" ) ;
// 建立一个基于该连接的网络流
ns = new NetStream( nc) ; 
// 调用本机的摄像头
cam = Camera. getCamera( ) ;
// 把摄像头添加到新建的流上 
ns. attachCamera( cam) ;
//把一个多媒体流发布到服务器的应用程序 上,取名为“myCamera”
ns. publish( " myCamera" ," live" ) ;

3Servidor de transmissão

O servidor de streaming de mídia é um software que armazena (ou recebe) fluxos de mídia e aguarda conexões de clientes. Este sistema usa o Flash Media Server da Adobe como servidor de streaming de mídia. O fluxo de mídia deve ser publicado no aplicativo que foi registrado no servidor de fluxo de mídia. Crie uma nova pasta "publishlive" na pasta "Aplicativo" do diretório de instalação do Flash Media Server e poderá registrar um aplicativo chamado "publishlive" sem escrever nenhum código.

4 clientes

O cliente é um aplicativo que reproduz streams de vídeo. Este sistema usa um programa Flash escrito em linguagem ActionScript como cliente para reproduzir streams em tempo real. Use o protocolo RTMP para obter os dados de vídeo do servidor de streaming de mídia e exibi-los para reprodução.

O que se segue apresenta brevemente o significado de alguns códigos-chave do cliente:


// 建立一个 RTMP 网络连接
var nc: NetConnection = new NetConnection( ) ;
//连接到 IP 为 222. 31. 64. 249 的流媒体服务 器上名字为 publishlive 的应用程序
nc.connect( "rtmp://222.31.64.249/publish- live" ) ;
// 建立一个基于该连接的多媒体流 
nsPlayer = new NetStream( nc) ;
// 播放名为“myCamera”的多媒体流 
nsPlayer. play( " myCamera" ) ;
// 新建一个 Video 对象用于显示视频
vidPlayer = new Video ( cam. width,cam.height) ;
// 将多媒体流添加到 Video 类上
vidPlayer. attachNetStream( nsPlayer) ; 
// 在 Flash 舞台上显示 Video 对象
addChild( vidPlayer) ;

7 Resumo e perspectiva

Este artigo analisa os dois métodos básicos de transmissão de mídia streaming: a diferença entre streaming sequencial e streaming em tempo real. E focado na análise das características de vários protocolos principais de streaming em tempo real. Com base no protocolo RTMP, analisou suas características e formato, e finalmente realizou um sistema de live streaming baseado no protocolo RTMP. É muito útil para uma compreensão abrangente dos princípios do protocolo RTMP e, ao mesmo tempo, pode fornecer uma referência para o projeto e implementação de sistemas de streaming de mídia mais complexos com base no protocolo RTMP.

Desde o início deste ano, com a ascensão gradual da TV na Internet (Over-The-Top TV), a tecnologia de streaming media dará início a um importante estágio de desenvolvimento. É previsível que o streaming media suportado pela tecnologia de streaming media ocupe parte do mercado de TV tradicional e ganhe um número considerável de grupos de clientes no futuro. O sistema de streaming media baseado no protocolo RTMP, que não exige que os usuários instalem um cliente, também surgirá em muitos sistemas de streaming media e ganhará uma grande participação no mercado.

Acho que você gosta

Origin blog.csdn.net/lingshengxueyuan/article/details/110873454
Recomendado
Clasificación