Setting
-udp-ip
to the master's broadcast address allows multiple slaves having the same broadcast address to sync to the master.
Eu acho que normalmente esses escravos devem rodar em máquinas diferentes. O fluxo de rede de transmissão pode chegar a muitas máquinas, mas no contexto de cada máquina, o fluxo fica vinculado a um único processo de audição.
Existe uma maneira de vários processos receberem o mesmo fluxo (compare esta resposta minha , reuseaddr
) mas parece-me que mplayer
não o usa.
Consegui resolver o problema no Linux com socat
, tee
e bash
. Como você precisa executar vídeos localmente, vamos nos ater a 127.0.0.1
; nós nem precisamos de transmissão.
O primeiro comando é como o que você usou:
mplayer -udp-master -udp-ip 127.0.0.1 video0.avi
Em seguida, execute um pipe que bifurcará o fluxo recebido (nota: 23867
é a porta padrão usada por mplayer
):
socat UDP-LISTEN:23867 - | tee >(socat - UDP-DATAGRAM:127.0.0.1:20001) >(socat - UDP-DATAGRAM:127.0.0.1:20002) >/dev/null
Isso reenviará os dados recebidos para as portas 20001
e 20002
. Você pode adicionar >(socat - UDP-DATAGRAM:127.0.0.1:20003)
e mais portas, se quiser.
Com esta execução, o escravo mplayer
-s pode vincular-se independentemente, cada um à sua própria porta:
mplayer -udp-slave -udp-ip 127.0.0.1 -udp-port 20001 video1.avi
mplayer -udp-slave -udp-ip 127.0.0.1 -udp-port 20002 video2.avi
…