Este documento explica como usar o RTMPS para transmitir dados ao vivo no YouTube de um codificador. O RTMPS é um fluxo de vídeo RTMP (RealTime Messaging Protocol) normal tunelado por uma conexão SSL. Este documento é destinado a fornecedores de codificadores que querem adicionar suporte ao RTMPS em codificadores que já oferecem suporte ao RTMP.
O RTMPS é uma boa opção para a maioria dos conteúdos do usuário, especialmente se eles exigirem baixa latência. Consulte a comparação de protocolos de ingestão para uma visão geral dos diferentes protocolos de ingestão que o YouTube ao vivo oferece suporte.
Requisitos
O envio de RTMPS para o YouTube ao vivo tem alguns pré-requisitos:
- Cada parte do URL de conexão (
<protocol>://<server>/<path>) precisa estar correta:- O protocolo precisa ser
rtmps. - O servidor precisa ser um endpoint de ingestão RTMPS válido do YouTube.
- O caminho precisa ser um nome de aplicativo RTMP válido do YouTube ao vivo.
- O protocolo precisa ser
- A conexão precisa ser feita com a porta 443 no servidor de ingestão.
- O fluxo multimídia precisa ser enviado com RTMPS, ou seja, usando RTMP em uma conexão SSL.
Como acessar o URL de conexão
Se o codificador já usa a API YouTube Live, o processo para acessar um URL de ingestão RTMPS é semelhante ao do RTMP. Envie uma solicitação de inserção (POST) de
LiveStreams para criar um novo fluxo de
ingestão. Na resposta, o
cdn.ingestionInfo.rtmpsIngestionAddress
campo especifica o URL RTMPS. Se você oferece suporte à ingestão dupla, o endereço de backup
é cdn.ingestionInfo.rtmpsBackupIngestionAddress.
Como criar a conexão
Use a biblioteca de soquetes de sua preferência para criar uma conexão SSL/TLS com a porta 443 no servidor especificado pelo URL de ingestão. Como o TLS funciona apenas com a camada de transporte, o nome do host do servidor não é estritamente necessário para iniciar a conexão. No entanto, ele é necessário para autenticação com nossos servidores. Portanto, adicione a extensão SNI (indicação de nome do servidor) ao handshake SSL e defina o nome do servidor como o nome do host do servidor ao qual você está se conectando.
Depois que a conexão SSL for estabelecida, use-a como a conexão da biblioteca de clientes RTMP. Uma conexão SSL inicializada tem a mesma API que uma conexão TCP padrão. Portanto, a biblioteca RTMP precisa funcionar com as duas de forma idêntica.
Solução de problemas
Erros de SSL
Se você tentar criar uma conexão SSL, mas receber um certificado inválido, provavelmente está se conectando a um servidor do YouTube que espera RTMP. Verifique se o nome do servidor usado tem "rtmps" nele. Observe o "s".
Se o URL parecer correto, mas você ainda receber um erro de SSL, talvez esteja se conectando à porta errada. Confirme se você está se conectando à porta 443.
Se o URL e a porta estiverem corretos, a biblioteca SSL poderá não estar processando o certificado corretamente. Procure mensagens de diagnóstico de baixo nível sobre falhas de SSL e verifique se você está usando o SNI no handshake.
Tempo limite de conexão esgotado
Se você conseguir se conectar ao servidor, mas a biblioteca RTMP expirar sem receber uma resposta sensata, talvez tenha configurado uma conexão RTMP de texto não criptografado com um servidor do YouTube que espera RTMPS. Verifique se você está criando uma conexão SSL, não uma conexão TCP simples.