¿Existe una forma sencilla de transmitir vídeo con ffmpeg a icesast? El vídeo fuente está en video/x-matroska
formato. Las transmisiones en sí están en varios formatos (mpeg, vorbis, aac, etc.). Quiero que ffmpeg adivine la fuente por sí solo y luego la transcodifique en cualquier cosa que los navegadores puedan reproducir "sobre la marcha", manteniendo la resolución de la fuente y la relación de aspecto. video/webm
servirá. Intenté hacer esto (incluido jugar con formatos de salida):
ffmpeg -i source.mkv -vcodec libvpx -cpu-used -5 -deadline realtime -content_type video/webm\
icecast://source:hackme@localhost:8000/vstream.webm
Pero la transmisión no se puede reproducir y las conexiones hacen que ffmpeg finalice con el siguiente error:
av_interleaved_write_frame(): Connection reset by peer
Error writing trailer of icecast://source:hackme@localhost:8000/vstream.webm: Connection reset by peer
Involucrar cualquier cosa además de ffmpeg está bien, solo quiero que funcione.
Respuesta1
Resulta que es difícil de lograr o no es posible en absoluto. Sin embargo, es posible lograr algo similar con la combinación de nginx
(con rtmp
módulo) y ffmpeg
. En nginx
la configuración (probablemente ubicada en /etc/nginx/nginx.conf
), se debe agregar la siguiente sección para que funcione como rtmp
servidor (Con pleno acceso público. Tenga cuidado, la transmisión no está cifrada y cualquiera que pueda acceder a su red puede verla.):
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
allow play all;
}
}
}
Entonces transmitir un archivo de vídeo es tan fácil como invocarlo ffmpeg
así:
ffmpeg -re -i video_file.mkv -c:v libx264 -f flv rtmp://host:1935/live
Finalmente, cualquiera que quiera ver la transmisión debe conectarse a la misma dirección con el reproductor de su elección:
rtmp://host:1935/live
Nota: host
aquí está el nombre de host del servidor donde nginx
se inicia.
Respuesta2
Respuesta corta: no puedes, porque Icecast es un sistema de transmisión de audio, no un servidor de transmisión de video.
Respuesta3
Con obs funciona bien, aunque no lo he probado con ffmpeg. Y obs tiene la ventaja de que los controles del jugador pueden buscar hacia adelante y hacia atrás. Seguí esta guía y es muy fácil:
https://www.braillealphabetsoup.com/icecast-video-streaming-with-obs.html