Hice esto con ffmpeg/ffserver ejecutándose en Ubuntu de la siguiente manera para webm (mp4 y ogg son un poco más fáciles, y deberían funcionar de manera similar desde el mismo servidor, pero debería usar los 3 formatos para compatibilidad entre navegadores)
En primer lugar, compile ffmpeg desde el origen para incluir los controladores libvpx (incluso si usa una versión que lo tiene, necesita los más nuevos (a partir de este mes) para transmitir webm porque simplemente agregaron la funcionalidad para incluir global encabezados). Hice esto en un servidor y escritorio de Ubuntu, y this guide me mostró cómo - instrucciones para otros sistemas operativos can be found here.
Una vez que haya obtenido la versión apropiada de ffmpeg/ffserver, puede configurarlos para la transmisión, en mi caso esto se hizo de la siguiente manera.
En el dispositivo de captura de vídeo:
ffmpeg -f video4linux2 -standard ntsc -i /dev/video0 http://<server_ip>:8090/0.ffm
- La parte "-f Video4Linux2 -standard NTSC -i/dev/video0" de que puede cambiar dependiendo de la fuente de entrada (el mío es de un video Tarjeta de captura).
Relevante extracto ffserver.conf:
Port 8090
#BindAddress <server_ip>
MaxHTTPConnections 2000
MAXClients 100
MaxBandwidth 1000000
CustomLog /var/log/ffserver
NoDaemon
<Feed 0.ffm>
File /tmp/0.ffm
FileMaxSize 5M
ACL allow <feeder_ip>
</Feed>
<Feed 0_webm.ffm>
File /tmp/0_webm.ffm
FileMaxSize 5M
ACL allow localhost
</Feed>
<Stream 0.mpg>
Feed 0.ffm
Format mpeg1video
NoAudio
VideoFrameRate 25
VideoBitRate 256
VideoSize cif
VideoBufferSize 40
VideoGopSize 12
</Stream>
<Stream 0.webm>
Feed 0_webm.ffm
Format webm
NoAudio
VideoCodec libvpx
VideoSize 320x240
VideoFrameRate 24
AVOptionVideo flags +global_header
AVOptionVideo cpu-used 0
AVOptionVideo qmin 1
AVOptionVideo qmax 31
AVOptionVideo quality good
PreRoll 0
StartSendOnKey
VideoBitRate 500K
</Stream>
<Stream index.html>
Format status
ACL allow <client_low_ip> <client_high_ip>
</Stream>
- Nota: este está configurado para un servidor en feeder_ip para ejecutar el comando ffmpeg antes mencionado, y para el servidor en modo ip_servidor servidor a través de client_low_ip client_high_ip mientras manejo de la conversación de mpeg a webm en server_ip (continúa a continuación).
Este comando ffmpeg se ejecuta en la máquina antes denominado ip_servidor (que maneja el MPEG real -> conversión WebM y se alimenta de nuevo en el ffserver en una alimentación diferente):
ffmpeg -i http://<server_ip>:8090/0.mpg -vcodec libvpx http://localhost:8090/0_webm.ffm
Una vez que todos hayan sido iniciados (primero el ffserver, luego el proceso feeder_ip ffmpeg luego el proceso server_ip ffmpeg) debería poder acceder a la transmisión en vivo en http: //: 8090/0.webm y verificar el estado en http : //: 8090/
Espero que esto ayude.
Esto parece un anuncio de Unreal. "Hay varias implementaciones", sin embargo, la única sugerencia es una solución única de Unreal que requiera una licencia. Dado que esta es una respuesta mucho más actual que la anterior mejor de hace 4 años, sería agradable ver que una de las varias implementaciones sea una que otros puedan construir. – JohnMetta