Um guia completo para RTMP: o que é e quando usá-lo?
O protocolo de mensagens em tempo real (RTMP) é um formato de transmissão em fluxo contínuo amplamente utilizado. Já existe há muitos anos e tornou-se uma ferramenta essencial para emissoras, operadores de rede e muitos outros sectores. No entanto, algumas ideias erradas sobre o RTMP tornaram-no menos popular do que poderia ser.
Mas o que é exatamente o RTMP? Como é que funciona? E deve utilizá-lo na sua próxima transmissão em direto?
Saiba mais sobre isto e muito mais abaixo.
O que é RTMP?
O RTMP é um protocolo de rede ou um sistema utilizado para transmitir conteúdos multimédia através da Internet com base na tecnologia TCP (Transmission Control Protocol).
O TCP é um dos componentes que constituem o conjunto de protocolos da Internet. O outro componente importante é o protocolo de Internet, também designado por IP.
O RTMP é um protocolo de rede ou um sistema utilizado para transmitir conteúdos multimédia através da Internet.
Em conjunto, o TCP e o IP actuam como pontes de comunicação entre as camadas de aplicação e de rede. Pense da seguinte forma: a camada de aplicação engloba aquilo com que normalmente interage, como o browser Mozilla Firefox ou qualquer outra aplicação de utilizador.
Para que o browser Firefox carregue uma página Web, tem de enviar um pedido ao servidor do sítio Web. Ao receber o pedido, o servidor envia o recurso solicitado (ou seja, um fluxo de vídeo, um vídeo pré-gravado no YouTube, ou código Html para a página web).
Para manter uma comunicação eficaz (ou seja, evitar que a correspondência seja descartada ou atrasada), a mensagem deve ser desmontada em pedaços mais pequenos, conhecidos como pacotes. Isto é feito do lado do remetente e, quando a mensagem é recebida, é novamente montada para o utilizador.
O TCP é o componente que trata da divisão da mensagem em pacotes ou partes mais pequenas que podem ser transmitidas de forma eficaz e eficiente.
A camada IP actua como o agente de encaminhamento que determina as melhores rotas para a transmissão dos pacotes através da Internet.
O protocolo RTMP é utilizado por muitos leitores multimédia populares, incluindo o Adobe Flash Player, o VLC Media Player, o QuickTime Player e o Windows Media Player. O RTMP também é suportado por alguns navegadores Web, incluindo o Google Chrome e o Mozilla Firefox.
A principal preocupação da maioria dos utilizadores com uma solução de transmissão em fluxo é a forma como esta fornece o conteúdo. Se a qualidade da resolução do streaming for baixa, a maior parte dos consumidores não vai gostar. Do mesmo modo, uma solução de transmissão em fluxo contínuo com elevada latência e com buffers ou carregamentos demasiado longos antes de reproduzir o conteúdo não se sairá bem.
É aqui que o RTMP brilha. Desde o seu desenvolvimento, o RTMP tem garantido baixa latência, buffering mínimo e uma das melhores qualidades de resolução de transmissão, desde que a ligação de rede seja suficientemente forte e rápida.
Outra vantagem do RTMP é a sua capacidade de suportar a transmissão em massa em simultâneo e sem grandes problemas.
No entanto, apesar de existir há muitos anos, o RTMP foi recentemente alvo de um maior escrutínio devido ao facto de o sistema ser inseguro para os seus utilizadores.
Eis como surge(m) a(s) vulnerabilidade(s) de segurança:
Em primeiro lugar, o protocolo RTMP não tem qualquer encriptação incorporada. Por conseguinte, qualquer comunicação ou transferência de pacotes enquanto o RTMP é utilizado pode ser escutada por grupos não autorizados ou por ataques do tipo man-in-the-middle.
Outro fator que contribuiu para a vulnerabilidade de segurança do RTMP é o facto de o seu código fonte ter sido proprietário durante muito tempo. O software proprietário (ou seja, o software cujos direitos de propriedade e controlo estão limitados à entidade que o desenvolveu ou comprou) recebe normalmente correcções de segurança que surgem regularmente, mas isso não é suficiente.
Surgem frequentemente novas vulnerabilidades e a comunidade criada em torno do software de código aberto garante correcções de segurança relativamente mais frequentes e melhores. Foi isto que a RTMP perdeu para melhorar a sua postura de segurança.
Variações de RTMP
As variações do RTMP incluem o seguinte:
- Servidor de protocolo de mensagens em tempo real (RTMPS) - é semelhante ao RTMP, mas tem encriptação, ou seja, camada de soquetes seguros (SSL) e segurança da camada de transporte (TLS) activadas, e suporta todos os leitores com o Flash Player ativado. É utilizado em cenários em que é vital impedir a adulteração ou o acesso não autorizado a dados em trânsito.
- Encrypted Real-Time Messaging Protocol (RTMPE) - é um protocolo de transmissão muito versátil que utiliza o Transport Control Protocol (TCP) e o User Datagram Protocol (UDP) para transmitir dados. O RTMPE também encripta todas as transmissões de dados utilizando a encriptação proprietária da Adobe para evitar o acesso não autorizado e a adulteração.
- Real-Time Messaging Protocol Tunnel (RTMPT) - O RTMPT utiliza um mecanismo de túnel para contornar as firewalls que normalmente bloqueiam todo o tráfego RTMP. Na prática, o RTMPT exige que o cliente envie um pedido HTTP modificado ao servidor, que responde com uma transmissão HTTP quase idêntica. O cliente e o servidor utilizam um ID de sessão; uma vez estabelecida a ligação, pode iniciar-se a transmissão de dados entre os dois.
- Real-Time Media Flow Protocol (RTMFP) - O RTMFP é uma versão mais avançada do RTMP, na medida em que utiliza um formato de codificação diferente, o UDP, para obter um elevado desempenho do fluxo de meios de comunicação.
História do RTMP Streaming
O Real-Time Messaging Protocol (RTMP) era inicialmente um protocolo proprietário desenvolvido pela Macromedia para a transmissão de áudio, vídeo e dados através da Internet entre um leitor Flash e um servidor.
O RTMP é atualmente utilizado por vários serviços online populares, como o Facebook, o Twitch e o Twitter, para a transmissão de vídeo em direto.
A primeira versão pública do RTMP foi lançada em 2002. Em 2009, a Adobe lançou uma versão de especificação aberta do RTMP, conhecida como OpenRTMP. A principal diferença entre o RTMP e o OpenRTMP é que, com o OpenRTMP, pode ser utilizado qualquer servidor multimédia em vez de apenas o Flash Media Server (FMS).
Há também mais flexibilidade com a especificação RTMP aberta relativamente à forma como os programadores podem proteger ou configurar a funcionalidade ponto-a-ponto. O objetivo é incentivar a inovação e a colaboração através da concorrência e do acesso aberto entre os programadores para desenvolver a solução RTMP ideal.
O princípio fundamental
O RTMP utiliza uma técnica denominada "streaming" para fornecer conteúdos. Isso significa que os dados são transferidos em pequenos pedaços chamados "chunks". Os pedaços são remontados na outra extremidade, para que o utilizador possa ver ou ouvir o conteúdo sem ter de esperar para o descarregar completamente.
O funcionamento do RTMP tem duas vertentes: A entrega na primeira e na última milha.
A entrega de primeira milha envolve geralmente a transmissão de multimédia do codificador para o servidor utilizando RTMP. A entrega de última milha refere-se à transmissão de multimédia do servidor para o dispositivo do utilizador. Nesta segunda parte, é utilizado um leitor Flash ou uma ferramenta igualmente capaz. Há informações de que a Adobe está a abandonar todo o suporte para o Flash; consequentemente, isto significa o fim da entrega de última milha.
Em resposta, a indústria adoptou o protocolo de transferência de hipertexto (HTTP), uma solução de transmissão mais eficiente.
As variações do RTMP, como o RTMPT, utilizam atualmente o HTTP para encapsular e transmitir os meios de comunicação.
Como funciona a ingestão de RTMP
Esta é provavelmente uma das graças salvadoras do RTMP, que o manteve durante tanto tempo. À medida que o mundo se afastou da visualização de multimédia em computadores e passou a utilizar a visualização móvel, o RTMP enfrentou um desafio.
Por um lado, o RTMP dependia do Adobe Flash Player para proporcionar a sua experiência de transmissão contínua, mas havia um pequeno problema. Os dispositivos móveis não suportavam o Adobe Flash player; essencialmente, o RTMP tornou-se inútil para os utilizadores que queriam os mesmos serviços de transmissão nos seus dispositivos móveis.
Em resposta, a Apple desenvolveu o protocolo HLS para suportar a funcionalidade de streaming em dispositivos móveis.
Era razoável esperar que o RTMP se tornasse obsoleto. Felizmente, continuou a existir com o RTMP ingest, criando o seu nicho como o protocolo ideal para transportar media do codificador para o servidor.
A ingestão RTMP dá prioridade ao funcionamento de codificadores de baixo custo e, geralmente, oferece aos utilizadores um fluxo de baixa latência.
Envolve três componentes principais:
1. O aperto de mão
Quando um cliente pretende ligar-se a um servidor RTMP, precisa primeiro de estabelecer um aperto de mão. Este processo começa com o cliente a enviar um pedido de "ligação" ao servidor, que inclui informações sobre o cliente e o tipo de ligação que está a tentar estabelecer.
O servidor responde então com uma mensagem "connected", que inclui informações sobre o servidor e o tipo de ligação que foi estabelecida.
Finalmente, o cliente e o servidor trocam mensagens para confirmar que ambos ainda estão ligados e para negociar quaisquer parâmetros necessários para a ligação.
2. A ligação
O principal objetivo da ligação de ingestão RTMP é fornecer um meio de transmissão de conteúdos multimédia de uma fonte para um destino.
A fonte de meios de comunicação pode ser uma câmara em direto, vídeo pré-gravado, áudio ou outros meios de comunicação. O destino é normalmente um servidor de streaming media, que distribui o conteúdo aos espectadores.
Existem três componentes para uma ligação de ingestão RTMP:
- O codificador converte o sinal de vídeo e áudio num formato digital que pode ser transportado através da Internet.
- O transporte: Este é o meio através do qual o sinal codificado é enviado do codificador para o servidor; normalmente, isto é feito através de UDP ou TCP.
- O servidor recebe o sinal codificado e disponibiliza-o aos espectadores (normalmente, embalando-o num formato como o Flash).
3. O fluxo contínuo
Quando um utilizador transmite conteúdo para um servidor multimédia, o servidor tem de codificar primeiro o vídeo e o áudio de entrada antes de o enviar para todos os clientes ligados.
O processo de codificação e reformatação de vídeo e áudio para um formato de ficheiro normalizado é designado por transcodificação. Envolve a conversão do sinal de entrada num formato que pode ser reproduzido em vários dispositivos.
Mais sobre a transmissão em fluxo contínuo, existem dois tipos de transmissão em fluxo contínuo: em direto e a pedido. O streaming em direto refere-se à transmissão em tempo real, enquanto o streaming a pedido é quando os utilizadores podem ver o conteúdo de forma conveniente.
O streaming em direto requer uma ligação constante entre o cliente e o servidor, ao passo que o streaming a pedido não.
O RTMP utiliza o TCP para manter uma ligação persistente entre o cliente e o servidor, permitindo um fluxo de baixa latência. No entanto, o RTMP não é adequado para o streaming a pedido.
Alternativas RTMP para ingestão
O SRT e o WebRTC são os principais concorrentes que podem igualar ou exceder as capacidades do RTMP. Segue-se uma breve apresentação das duas alternativas:
Transporte seguro e fiável (SRT)
O SRT preenche as lacunas que o RTMP não conseguiu colmatar, como a manutenção de uma transmissão de baixa latência mesmo quando o utilizador está ligado a uma rede relativamente pouco fiável. Isto torna-o uma excelente escolha para a transmissão em direto e a pedido.
Uma vez que é de código aberto, os limites das suas capacidades são infinitos e não há qualquer preocupação com o facto de o apoio ao desenvolvimento ser retirado.
Comunicações Web em tempo real (WebRTC)
O WebRTC ganha com a sua publicação baseada no browser. O protocolo WebRTC HTTP Ingest Protocol (WHIP) também está a ser desenvolvido, e o que isto significa para os utilizadores é que poderão transmitir apenas com um navegador Web em vez de se preocuparem com codificadores como acontece com o RTMP.
Alternativas RTMP para egressos
No topo da lista de alternativas de saída RTMP estão HTTP Live Streaming (HLS), MPEG-DASH e WebRTC.
Eis uma breve apresentação das alternativas:
HLS e MPEG-DASH
Estes dois são praticamente iguais, só que o HLS é proprietário e o MPEG-DASH é de código aberto.
O melhor destes dois produtos é que foram concebidos para proporcionar uma baixa latência e uma óptima qualidade de multimédia, funcionando mesmo com ligações de rede pouco fiáveis.
O WebRTC é também uma alternativa digna de nota às soluções de saída RTMP.
O RTMP e o Flash estão a morrer?
A resposta curta é: provavelmente não. A resposta longa é um pouco mais complicada.
O aumento constante da popularidade do HTML5 e a proliferação de alternativas capazes ao Flash podem fazer parecer que o RTMP e o Flash estão a morrer. Mas não é esse o caso.
O Flash tem estado em declínio há já algum tempo, perdendo uma quota de mercado significativa para o HTML5 nos últimos anos, e a sua posição outrora dominante no mundo do vídeo está agora constantemente ameaçada.
No entanto, continua a ter uma presença significativa na Web e é utilizado por muitos sítios populares, incluindo o YouTube e o Facebook.
Quanto ao RTMP, continua a ser amplamente utilizado para a transmissão de conteúdos áudio e vídeo. No entanto, o seu futuro é menos certo do que o do Flash.
A Adobe anunciou que deixará de suportar RTMP em 2020, o que poderá marcar o fim deste protocolo. No entanto, existem muitas alternativas baseadas em RTMP, pelo que é provável que continue a ser utilizado de uma forma ou de outra nos próximos anos.
Então, deve fazer streaming com RTMP?
Depende. Veja alguns dos prós e contras da utilização de RTMP.
Prós
- É muito estável. Em comparação com outras alternativas no mercado, é altamente improvável que haja qualquer interrupção ou tempo de inatividade durante a utilização de um serviço compatível com RTMP.
- Baixa latência e buffering mínimo. O RTMP é único neste aspeto, o que significa que os utilizadores podem ver vídeos com uma melhor resolução e que o carregamento dos conteúdos multimédia demora muito menos tempo.
- Compatibilidade. A natureza robusta e fiável do RTMPS incentivou mais fabricantes a conceberem os seus produtos para se integrarem facilmente com o RTMP
Contras
- O RTMP requer uma ligação persistente entre o cliente e o servidor, o que pode ser problemático se houver interrupções na rede
- Sendo um software proprietário, existe pouca flexibilidade para os utilizadores avançados.
FAQS
Como utilizo o Wave.video para transmissão via RTMP?
Se pretende transmitir vídeo através de RTMP, o Wave.video é uma óptima opção. Veja como usá-lo:
- Crie uma conta em Wave.video e inicie sessão, caso ainda não o tenha feito.
- Escolha o vídeo que pretende transmitir.
- Navegue até à página "Destinations" (Destinos) em Wave.video e clique em "Custom RTMP" (RTMP personalizado)
- Em seguida, terá de encontrar o URL do servidor e a chave de transmissão do conteúdo que está a tentar transmitir. Para tal, navegue para o sítio Web com o fluxo que pretende visualizar.
- Pode utilizar uma aplicação ou extensão de terceiros para extrair o URL e a chave se não souber como o fazer.
- Copie o URL do servidor e a chave de fluxo.
- Cole o URL do servidor e a chave de transmissão em Wave.video.
- Crie ou agende a sua transmissão.
- Abra o estúdio em direto e comece a transmitir.
É só isso, rápido e fácil!
Que codificadores suportam RTMP?
Existem muitos codificadores de hardware e software que suportam RTMP. Alguns deles incluem:
- Adobe Media Encoder
- Estúdio OBS
- Servidor Elemental
- TriCaster
- Transmissão por cabo
- vMix
- TeraDek
- Wowza Streaming Engine
- Vídeo do Niagara
RTMP vs. RTSP - Qual é o melhor?
RTMP e RTSP são protocolos para transmissão de áudio, vídeo e dados pela Internet. São semelhantes em muitos aspectos, mas algumas diferenças fundamentais tornam-nos ideais para diferentes situações ou preferências.
Eis um breve resumo das principais diferenças entre os dois:
- O RTMP é melhor para o streaming em direto, enquanto o RTSP é melhor para o streaming a pedido.
- O RTMP tem menor latência, enquanto o RTSP pode fornecer vídeo de maior qualidade.
- O RTMP requer um Flash Media Server, enquanto o RTSP pode funcionar com qualquer servidor multimédia.
Então, qual é o melhor protocolo? Tudo depende das suas necessidades específicas.
O RTMP é uma boa escolha se precisar de baixa latência e não se importar de utilizar o Flash. O RTSP poderá ser ideal se necessitar de um vídeo de alta qualidade ou se pretender utilizar um servidor multimédia que não seja Flash.
O que é o Action Message Format (AMF)?
O AMF é um formato binário para codificação e transmissão de dados através da Internet e é frequentemente utilizado em conjunto com o RTMP.
O AMF permite a transmissão de dados incompatíveis com RTMP, tais como objectos ActionScript. Também permite a troca eficiente de dados entre aplicações Flash e servidores.
O que é um URL RTMP e como obtê-lo do Facebook ou do YouTube?
Um URL RTMP é um identificador único utilizado para transmitir conteúdos de vídeo em direto para várias plataformas.
Normalmente, contém um endereço IP, um nome de domínio e um número de porta.
É necessário criar um evento de transmissão em direto em qualquer uma das plataformas para o obter do YouTube ou do Facebook. Depois de o ter feito, poderá encontrar o URL RTMP nas definições do evento.
Considerações finais
O RTMP deixou, sem dúvida, a sua marca no mundo. Estará a sair de cena? Como solução de saída, possivelmente, mas de entrada, de modo algum!
Mesmo que surjam outras alternativas igualmente ou mais capazes, o RTMP continuará a ser relevante na transmissão e no streaming de media.