Bienvenidos

http://www.ipeacetv.com/

jueves, 7 de enero de 2021

OBS Studio: transmita a múltiples plataformas o canales a la vez

https://obsproject.com/forum/resources/obs-studio-stream-to-multiple-platforms-or-channels-at-once.932/

 Antes de leer, tenga en cuenta que esto solo es útil si un servicio de terceros como https://restream.io no se adapta a sus necesidades. Además, algunas de las configuraciones más complicadas pueden requerir una buena comprensión de la línea de comandos FFmpeg. Si necesita ayuda para su configuración específica, Nakajima Megumi#7432haga ping en el obsproject support Discord.

La idea general es la siguiente: aloje un servidor RTMP en su PC, transmita a ese servidor, luego use FFmpeg para copiar la transmisión a tantas plataformas de transmisión como necesite, con o sin recodificación.

Paso 1. Alojar un servidor RTMP

Existen múltiples soluciones para esto. El que recomiendo personalmente para Windows es MonaServer, ya que es relativamente sencillo de configurar, simplemente extraiga y ejecute.
Consiguelo aqui:http://sourceforge.net/projects/monaserver/files/MonaServer_Win32.zip/download
Extraerlo, luego iniciar MonaServer.exe desde la línea de comando. Comando de ejemplo:
Código:
cd /D C:\Apps\mona
monaserver.exe
1_mona_running.png

No dude en ignorar los mensajes de error que no sean relevantes para el servidor RTMP que se ejecuta en el puerto 1935.
Este albergará un servidor RTMP en su PC con Windows; de forma predeterminada, solo usted debería poder transmitir a él a menos que reenvíe el puerto 1935. Si está usando Linux o si desea configurar un servidor con más funciones, puede usar la guía de dodgepong, aquí https : //obsproject.com/forum/resources/how-to-set-up-your-own-private-rtmp-server-using-nginx.50/


Paso 2. Configure OBS Studio para transmitir a su servidor y comenzar a transmitir


en OBS Studio, copie su perfil actual de transmisión en vivo haciendo clic en Perfiles> Duplicar. Esto le permitirá deshacer fácilmente todos los cambios, si es necesario.
2_obs_copy_profile.png

Después de eso, vaya a Configuración> Transmisión, cambie el servicio de transmisión a "Personalizado" y pegue lo siguiente:
En el campo Servidor:
rtmp://localhost:1935/live
En el campo Clave de transmisión :
stream
3_settings-stream.png

Presione Aceptar para aplicar los cambios y Iniciar transmisión para iniciar su transmisión local. MonaServer reconocerá un nuevo cliente ahora:
4_mona_rtmp.png

Debería ver "1 clientes". Esos somos nosotros.

Paso 3. Configure FFmpeg y pruebe


Si aún no tiene FFmpeg instalado, vaya a https://ffmpeg.zeranoe.com/ y descargue la compilación estática de 64 bits. Extraiga ffmpeg.exe, ffprobe.exe y ffplay.exe en la misma carpeta donde tiene MonaServer.exe.
Ahora, verifiquemos que la transmisión esté en vivo. Para hacer eso, cree una nueva ventana de CMD o Powershell y use ffplay desde su descarga de ffmpeg:
Código:
cd /D C:\Apps\mona
ffplay -i rtmp://localhost:1935/live/stream
5_droste.png
Como estoy viendo mi propia transmisión, veo un efecto de retroalimentación de video. No se preocupe por el alto retraso de la transmisión, la mayor parte provino del almacenamiento en búfer de ffplay, RTMP debería introducir aproximadamente 800 ms de latencia adicional en el peor de los casos, 100-200 ms en promedio.
Salga de ffplay presionando q en su ventana o Ctrl + C en la ventana de línea de comando donde lo generó.


Paso 4. Obtenga sus claves de transmisión


Ahora necesita sus claves de transmisión y la ruta completa exacta para cada transmisión que desea ejecutar.
Por ejemplo, el servidor de ingesta de Twitch en Francia está disponible en rtmp: //live-fra.twitch.tv/app/ y el servidor de ingesta principal de Youtube es rtmp: //a.rtmp.youtube.com/live2. Lo que esto significa es que su ruta de reproducción completa para transmitir en Twitch sería rtmp: //live-fra.twitch.tv/app/my-stream-key, donde my-stream-key es su clave de transmisión completa.
Para ver la lista completa de servidores de ingesta que expone OBS Studio, lea https://github.com/obsproject/obs-studio/blob/master/plugins/rtmp-services/data/services.json .


Paso 5. Iniciar la transmisión

Tenga en cuenta que podría estar usando saltos de línea para una lectura más conveniente en los comandos de ejemplo; tendrá que eliminarlos.

Opción 1. Iniciar y detener transmisiones de forma independiente entre sí por servicio, sin volver a codificar

Para ello, debe iniciar una instancia de FFmpeg separada para cada servicio. Esto aumenta ligeramente la huella total de RAM y CPU. A continuación, se muestra un comando de ejemplo para comenzar a transmitir a una única plataforma:
ffmpeg -i rtmp://localhost:1935/live/stream -c:v copy -c:a copy -f flv rtmp://live-fra.twitch.tv/app/my-stream-key
Puede detener la transmisión cerrando la ventana de CMD / PowerShell o presionando Ctrl + C. FFmpeg intentará salir limpiamente, lo que puede ser lento; Si necesita forzar el cierre de FFmpeg, enviar Ctrl + C cuatro o más veces provocará un cierre forzado.

Opción 2. Iniciar y detener múltiples transmisiones en vivo simultáneamente, todos los servicios / canales recibirán la misma calidad de video, sin necesidad de volver

codificar Para transmitir a múltiples plataformas o canales a la vez, podemos usar el protocolo "tee" y rutas de reproducción separadas con el | personaje.
Probémoslo primero haciendo una remezcla de la transmisión local y volviéndolo a transmitir a nuestro propio servidor:
Código:
ffmpeg -i rtmp://localhost:1935/live/stream -c:v copy -c:a copy -map 0 -f tee "[f=flv]rtmp://localhost:1935/live/stream2|[f=flv]rtmp://localhost:1935/live/stream3|[f=flv]rtmp://localhost:1935/live/stream4"
Si MonaServer informa 5 clientes (es decir, 4 emisoras y 1 espectador), está funcionando.
Aquí tienes un ejemplo con tres canales de Twitch:
Código:
ffmpeg -i rtmp://localhost:1935/live/stream -c:v copy -c:a copy -map 0 -f tee "[f=flv]rtmp://live-fra.twitch.tv/app/my-stream-key|[f=flv]rtmp://live-fra.twitch.tv/app/my-second-stream-key|[f=flv]rtmp://live-fra.twitch.tv/app/my-third-stream-key"
Cada URL recibirá una copia de la transmisión, sin volver a codificar.

Opción 3. Dos (o más) servicios, cada uno recibe su propia codificación.

Supongamos que desea transmitir a Twitch en 720p 60 fps 6 mbps y a Youtube en 1080p 60 fps 20 mbps. Hay dos formas de abordar esto: transmita localmente en alta calidad (apunte a 100-230 Mbps o use CQP) y realice dos recodificaciones, aumentando ligeramente la huella de rendimiento, o transmita a una velocidad de bits lo suficientemente alta para Youtube y vuelva a codificarla para Twitch, dañando la calidad de la transmisión de Twitch.

Si tenemos una transmisión local de alta calidad y queremos hacer dos recodificaciones x264, manteniendo nuestro audio de 160 kbps para ambas transmisiones, estaríamos especificando salidas una tras otra, como esta:
Código:
ffmpeg -hide_banner -i rtmp://localhost:1935/live/stream -c:v libx264 -b:v 20000k -preset veryfast -c:a copy -f flv rtmp://a.rtmp.youtube.com/live2/my-youtube-stream-key -c:v libx264 -b:v 6000k -preset veryfast -c:a copy -vf "scale=1280:720" -f flv rtmp://live-fra.twitch.tv/app/my-stream-key
Tenga en cuenta la adición de -vf "scale=1280:720": esto agrega un filtro de video para reducir la escala de la transmisión a 720p para Twitch. Supongo que la entrada será 1080p 60 fps, y eso es lo que recibirá Youtube.

Aquí hay otro ejemplo que usa NVENC para la recodificación de Youtube y x264 para Twitch:
Código:
ffmpeg -hide_banner -i rtmp://localhost:1935/live/stream
-c:v nvenc_h264 -b:v 20000k -preset slow -c:a copy -f flv  rtmp://a.rtmp.youtube.com/live2/my-youtube-stream-key
-c:v libx264 -b:v 6000k -preset veryfast -c:a copy -vf "scale=1280:720" -f flv  rtmp://live-fra.twitch.tv/app/my-stream-key

O, digamos que está transmitiendo desde OBS Studio a 20 mbps 1080p 60 fps y desea copiar la transmisión tal como está en Youtube y volver a codificar a 4 mbps 720p 30 fps para Twitch:
Código:
ffmpeg -hide_banner -i rtmp://localhost:1935/live/stream
-c:v copy -c:a copy rtmp://a.rtmp.youtube.com/live2/my-youtube-stream-key
-c:v libx264 -preset veryfast -b:v 6000k -c:a copy -r 30 -vf "scale=1280:720" -f flv rtmp://live-fra.twitch.tv/app/my-stream-key
Tenga en cuenta la adición de -r 30para bajar de 60 fps a 30 fps. Si su entrada es 59,94 fps (60000/1001), puede bajar a 29,97 utilizando -r 30000/1001.

Nota sobre las opciones de FFmpeg y la selección de preajustes:
-preset veryfastselecciona el preajuste x264, "muy rápido".
FFmpeg también puede usar NVENC con -c:v h264_nvenc- en ese caso, recomendaría usar -preset slow(alta calidad de 2 pasadas) en todas las tarjetas excepto las tarjetas Turing; en tarjetas Turing que recomiendo -preset hq(alta calidad de una sola pasada). Tenga en cuenta que debido a las limitaciones de marketing de NVIDIA, solo puede utilizar 2 sesiones NVENC simultáneas en tarjetas GeForce; intentar iniciar un tercero arrojará un error de "memoria insuficiente" (incluso si tiene suficiente VRAM de repuesto).
FFmpeg también puede usar AMD AMF con -c:v h264_amf, consulte esta documentación para usar AMF:
ffmpeg -hide_banner -h encoder=h264_amf

Opción 4. Volver a codificar algunos o todos los flujos

Esta opción requiere una buena comprensión de la interfaz de línea de comandos y FFmpeg. Intentaré describirlo y proporcionar ejemplos, pero si eso no ayuda, es posible que aún tenga que buscar en la documentación de FFmpeg.


Digamos que tomamos una entrada de alta calidad, la guardamos como está en el archivo, luego la codificamos a 2 mbps y la enviamos a 2 servicios: Toma
la transmisión
ffmpeg -hide_banner -i rtmp://localhost:1935/live/stream
Guardar localmente
-c:v copy -c:a copy -f mp4 source.mp4
Codifica con dos salidas
-c:v libx264 -b:v 2000k -c:a copy -map 0 -f tee "[f=flv]rtmp://live-fra.twitch.tv/app/my-stream-key|[f=flv]rtmp://live-fra.twitch.tv/app/my-second-stream-key"


Si necesitas ayuda para tu configuración específica, o algunas partes de la guía no está clara,Nakajima Megumi#7432hagapingen el oscuro proyecto Discord con sus preguntas.

Puede obtener más información sobre elteemuxer para casos de uso más avanzados aquí: https://trac.ffmpeg.org/wiki/Creating multiple outputs

No hay comentarios:

Publicar un comentario