Cómo publicar contenido de YouTube en vivo a través de RTMPS

En este documento, se explica cómo usar RTMPS para transmitir datos en vivo desde YouTube con un codificador. RTMPS es una transmisión de video por Internet RTMP (protocolo de mensajería en tiempo real) normal que se conecta con un túnel a través de una conexión SSL. Este documento está dirigido a proveedores de codificadores que deseen agregar compatibilidad con RTMPS en codificadores que ya admiten RTMP.

RTMPS es una buena opción para la mayoría del contenido de usuario común, en especial si requiere una latencia baja. Consulta la Comparación de protocolos de transferencia para obtener una descripción general de los diferentes protocolos de transferencia compatibles con la transmisión en vivo de YouTube.

Requisitos

Para enviar RTMPS a YouTube en vivo, debes cumplir con los siguientes requisitos previos:

  • Cada parte de la URL de conexión (<protocol>://<server>/<path>) debe ser correcta:
    • El protocolo debe ser rtmps.
    • El servidor debe ser un extremo de transferencia de RTMPS válido para YouTube.
    • La ruta debe ser un nombre válido de aplicación de RTMP para YouTube en vivo.
  • La conexión debe establecerse en el puerto 443 del servidor de transferencia.
  • La transmisión multimedia debe enviarse con RTMPS; es decir, mediante RTMP mediante una conexión SSL.

Obtén la URL de conexión

Si tu codificador ya usa la API de YouTube en vivo, el proceso para obtener una URL de transferencia RTMPS es similar al de la función RTMP. Envía una solicitud de inserción de transmisiones en vivo (POST) para crear una transmisión de transferencia nueva. En la respuesta, el campo cdn.ingestionInfo.rtmpsIngestionAddress especifica la URL RTMPS. Si admites la transferencia dual, la dirección de copia de seguridad es cdn.ingestionInfo.rtmpsBackupIngestionAddress.

Crea la conexión

Usa tu biblioteca de sockets preferida para crear una conexión SSL/TLS en el puerto 443 en el servidor que especifica la URL de transferencia. Debido a que TLS funciona solo con la capa de transporte, no es necesario que el nombre de host del servidor inicie la conexión; sin embargo, es necesario para la autenticación con nuestros servidores. Por lo tanto, asegúrate de agregar la extensión SNI (indicación del nombre del servidor) a tu protocolo de enlace SSL y establece el nombre del servidor con el nombre de host del servidor al que te conectas.

Una vez que se establezca la conexión SSL, úsala como la conexión para tu biblioteca cliente RTMP. Una conexión SSL inicializada tiene la misma API que una conexión TCP estándar, por lo que la biblioteca RTMP debe poder trabajar con ambas de forma idéntica.

Solución de problemas

Errores de SSL

Si intentas crear una conexión SSL, pero obtienes un certificado no válido, es probable que te conectes a un servidor de YouTube que espera RTMP. Asegúrate de que el nombre del servidor que uses incluya la palabra “rtmps”. Ten en cuenta la “s”.

Si la URL parece correcta, pero aún recibes un error de SSL, es posible que te estés conectando al puerto incorrecto. Confirma que te conectas al puerto 443.

Si la URL y el puerto son correctos, es posible que tu biblioteca SSL no esté manejando el certificado de forma correcta. Busca mensajes de diagnóstico de bajo nivel sobre fallas de SSL y vuelve a verificar que estés usando SNI en el protocolo de enlace.

Se agotó el tiempo de espera de la conexión

Si puedes conectarte al servidor, pero se agota el tiempo de espera de tu biblioteca RTMP sin obtener una respuesta razonable, es posible que hayas configurado una conexión RTMP de Cleartext a un servidor de YouTube que espera RTMPS. Asegúrate de crear una conexión SSL, no una conexión TCP simple.