Sincronize players VLC em duas máquinas


15

É possível sincronizar a reprodução do VLC em duas máquinas diferentes? Eu gostaria que dois PCs em diferentes partes da casa reproduzissem o mesmo vídeo - portanto, outras sugestões que resolveriam esse problema também serão bem-vindas!

Respostas:


9

Eu uso multicast. Isso envia um fluxo para todos os receptores simultaneamente.

A rede possui segmentos com fio e wifi.

Com multicast, o fluxo usa apenas uma vez sua largura de banda em cada segmento

Isso significa também que todos os computadores recebem o mesmo pacote aproximadamente ao mesmo tempo, menos atrasos de propagação nos meus comutadores. Os atrasos na propagação são insignificantes para som e vídeo visível humano (30 fps).

A única coisa que pode acontecer é que computadores diferentes funcionam em locais diferentes no cache da rede. Para mantê-los o mais próximo possível, eu diminuí o cache até que o sistema mais lento (um laptop de 32 bits com wifi) comece a ser interrompido algumas vezes e depois dê um pouco mais.

Razão: quando o vlc começa a consumir buffer, leva muito tempo para voltar ao início do buffer, parece que a codificação não prioriza voltar ao 'buffer zero', mas é confortável permanecer lá em cima.

Também uso no 'servidor' dois clientes vlc: um gera o fluxo e não é exibido localmente. O outro é o cliente de exibição que escuta o fluxo como todos os outros sistemas, com a mesma configuração de cache de rede.

Na linha de comando:

cliente gerador de fluxo que se conecta ao fluxo da Internet (este possui um grande cache para que não seja cortado e entregue um fluxo constante na minha rede multicast):

vlc -vvv http://yp.shoutcast.com/sbin/tunein-station.pls?id=154 --sout udp:239.0.0.1 --no-sout-display --sout-keep --ttl 4 (que deveria estar em uma linha)

Como você vê, --no-sout-display é dado: a saída do fluxo é gerada, mas nenhuma saída local. Faço o mesmo, independentemente de reproduzir arquivos / DVDs locais ou conteúdo de rede.

E certifique-se de que --ttl esteja definido como> 1 se você tiver um roteador sem fio em algum lugar. Eu sempre o defini como 4 para não ter 'surpresas'. No entanto, se você possui uma rede com vários roteadores e os hosts em uma rede não conseguem ver o multicast, pode ser necessário aumentar esse ttl em um ou dois pontos (ou verificar se o roteador permite a difusão seletiva), nem todos os roteadores sem fio estão disponíveis. definido como padrão).

Em todos os sistemas, incluindo o que gera o fluxo e o vlc não-output em execução, eu tenho o seguinte vlc:

vlc udp://@239.0.0.1 --network-caching 60 --sout-keep

Isso define o cache da rede na minha rede e, com o desempenho do sistema mais lento, no máximo. .06 segundos em cache.

Para o som, isso corresponde a uma distância de propagação de cerca de 100 pés, o que significa que se o cache é consumido ao máximo, o sistema lento soa como se estivesse a 100 pés de distância.

Meu atraso na rede é 0,5 ms ou melhor (não é ping, é um ida e volta de pilha de baixa prioridade e vários ms).

Em meu lugar, onde nunca vejo ou ouço simultaneamente dois sistemas separados por mais de 100 pés (não subo as escadas e o porão, a vantagem de fazê-lo dessa maneira é ter o mesmo em todos os lugares sem acionar o amplificador da sala).

O laptop no quarto: se ele for interrompido com muita frequência, eu apenas ligo o cache localmente, não o ouço no porão ou no andar de cima e, quando estou lá, provavelmente desliguei os outros :-).

Muito importante: sempre que eu precisar de transcodificação, tenho todos os receptores no mesmo protocolo e codificação, e faço a transcodificação no vlc que não gera saída que gera o fluxo.

Não transcodifico nos clientes multicast. Isso resultaria em atrasos ruins, já que cada sistema tem desempenho diferente.

Para este exemplo de áudio, não há transcodificação, todos podem entender as codificações originadas pelo shoutcast. (na verdade, também não preciso transcodificar para o vid ... todos têm os conjuntos completos de codecs).

Isso ajuda?

Sim, existem exemplos na rede para executar o vlc sincronizado usando o cliente / mestre de sincronização de rede e vários fluxos de unicast (uma sequência de destino de 10 milhas no servidor :-D).

No entanto: o streaming de unicast para n clientes em um segmento faz com que o fluxo apareça n vezes nesse segmento, e quanto mais alto você avança no servidor de origem, mais multiplicações do mesmo fluxo consomem largura de banda. Eu não seria capaz de ver meu vídeo 1080p. Meu wireless mal consegue lidar com um desses, nem sempre (56Mb).

Ah, você pergunta como na GUI:

na janela de transmissão, clique em "mais opções" e desmarque "reproduzir localmente" para a instância do vlc que gera o fluxo (tem como entrada um arquivo local, lista de reprodução ou fluxo da Internet). Deixe o cache no padrão (1000 ms no cache). Se algum dos outros clientes não conseguir entender seu codec, escolha um que compreenda e transcodifique para esse no mesmo sistema.

Nas opções dos destinos, você deixa o 'display local' padrão ativado e altera o cache: brinque com isso (comece com 100 e diminua) até que o sistema mais lento seja interrompido e defina todos os sistemas mais rápidos para o mesmo. Com buffers curtos: quando um cliente inicia, são necessários de 10 a 15s de sputtering até que ele "consiga".

Meus clientes aumentam 100% do tempo, sempre que paro de transmitir, eles continuam ouvindo o endereço multicast.

Nenhuma porta fornecida: o padrão é 1234 em todos os lugares, eu corro um servidor de origem. Se você executar mais de um, precisará fornecer um número de porta da seguinte maneira: ... 239.0.0.1:65535. Meus exemplos de números: escolha qualquer endereço multicast em 239/8. Portas: escolheu qualquer uma acima de 1024 (sim, 1024, porque a Microsoft usa 1024 também no MC).

Se ninguém estiver ouvindo, o fluxo não será exibido na rede, apenas será iniciado quando o primeiro ouvinte ingressar na sessão multicast. Portanto, se você tiver dez definido e ouvir apenas um, terá um fluxo consumindo largura de banda. Se você ouvir fluxos diferentes, obterá n vezes a largura de banda consumida por n fluxos.

Multicast: a largura de banda usada é a mesma para um ou 10000 clientes por fluxo.

Usando unicast: cada cliente salta no fluxo do remetente em um horário diferente, o que significa que seus atrasos ainda estão presentes, mesmo se você restringir o cache. Unicast e multicast funcionam totalmente diferentes. É por isso que o unicast tem o recurso de sincronização.

Existe uma maneira diferente de transmitir o mesmo para dizer um armazenamento Target inteiro: transmitiria o unicast com sincronização para clientes vlc via satélite e serviria aqueles que estão dentro do 'alcance acústico' a partir daí. Nos escritórios, eu faço um ou dois por andar, para que todos os andares sejam totalmente sincronizados usando unicast e sincronização de rede. Normalmente, o atraso de propagação da rede é muito menor que o atraso acústico, e o acústico é desativado para que você não ouça todos os alto-falantes, mas apenas os que estão perto de você.

envie-me um email para sirhelpsalot@gmail.com se precisar de ajuda, eu também posso colocar isso no youtube.

:-)


3
Bem-vindo ao SuperUser, e obrigado por contribuir! Você poderia reduzir um pouco sua resposta removendo comentários desnecessários? No momento, é uma verdadeira parede de texto e a resposta real é bastante difícil de entender.
31412 Indrek

1
Qual é a confiabilidade do streaming / multicast para sincronizar vídeo? Se eu tiver um desktop com núcleo hexadecimal executando o VLC e um raspberry pi executando o omxplayer, que garantia tenho de que o omxplayer não levará mais 3 segundos para abrir o fluxo?
puk

4

O VLC pode transmitir a saída por uma rede e reproduzi-la localmente, então eu sugiro que você tenha uma máquina que transmita a saída pela rede, mas marque a opção "exibir localmente" na guia "destinos".

Aqui está uma descrição minuciosa das configurações a serem usadas no streaming.


1

O uso do VLC para (ou a documentação nunca é atualizada) possui um módulo chamado netsync, mas, como a maioria dos módulos incomuns do VLC, é de buggy, mal documentado e negligenciado. Eu nunca consegui fazer isso funcionar.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.