He estado ejecutando una transmisión en vivo de Youtube por un tiempo y estoy desarrollando una solución para poder ejecutar la transmisión de forma remota a través de un navegador. Mi plan es tener un proyecto de API web central de ASP.net ejecutando un servicio en segundo plano que cuando le envío la información de transmisión, inicie FFMpeg para transmitir una cámara web USB. También necesito poder presionar un botón para "silenciar" la transmisión de modo que muestre un video en blanco con texto superpuesto (es decir, "Dificultades técnicas").
Mi solución hasta ahora es utilizar dos instancias de FFMpeg. Cuando cambio de modo, cierro un proceso y comienzo el otro. Lo he conseguido funcionar un poco, pero cuando cambio entre "modo silencio" y "modo transmisión", Youtube parece ahogarse con la transmisión que se está cambiando. Sospecho que es porque cuando paso del modo silencio al modo transmisión, youtube no reconoce que el modo silencio ha finalizado. Además, el modo silencio muestra el texto como quiero, pero hace que el reproductor de Youtube deje de estar "en vivo", de modo que si vuelvo a iniciar la transmisión normal, el usuario tiene que hacer clic en el botón "En vivo" para estar actualizado. .
Aquí está la línea de comando para ambos modos:
Modo de transmisión:
ffmpeg.exe -f dshow -i video="<webcam name>" -f dshow -i audio="<microphone name>" -vcodec libx264 -pix_fmt yuv420p -preset veryfast -r 30 -g 60 -b:v 3500k -f flv rtmp://a.rtmp.youtube.com/live2/<stream key>
Modo silencio (blank.mp4 es un vídeo en blanco de 3 segundos de duración):
ffmpeg.exe -stream_loop -1 -i ./FFMpeg/blankvid.mp4 -vf "drawtext=fontfile=C\\:/Windows/Fonts/Arial.ttf:text='Technical Difficulties':fontcolor=white:fontsize=60:box=1:[email protected]:boxborderw=5:x=(w-text_w)/2:y=(h-text_h)/2" -vcodec libx264 -pix_fmt yuv420p -preset veryfast -r 30 -g 60 -b:v 3500k -f flv -flvflags no_duration_filesize rtmp://a.rtmp.youtube.com/live2/<stream key>
Última nota: sé que puede haber una manera de usar un filtro de color para crear el video en negro, en lugar de tener un archivo Blankvid.mp4. Si también sabes cómo obtener los parámetros para eso, sería de gran ayuda.
Respuesta1
Entonces, después de mucha más búsqueda y prueba y error, parece que ahora lo tengo funcionando. No estoy seguro de si todos los parámetros son necesarios, pero el problema estaba en el comando "Silenciar". También descubrí cómo usar el filtro de color en lugar de un video en blanco. Terminé cambiándolo a
ffmpeg -re -stream_loop -1 -f lavfi -i "color=black:s=1280x720" -f lavfi -i anullsrc -vcodec libx264 -pix_fmt yuv420p -preset veryfast -r 30 -g 60 -b:v 3500k -vf "drawtext=fontfile=C\\:/Windows/Fonts/Arial.ttf:text='Technical Difficulties':fontcolor=white:fontsize=60:x=(w-text_w)/2:y=(h-text_h)/2" -f flv rtmp://a.rtmp.youtube.com/live2/<stream key>