Sincronizza i giocatori VLC su due macchine


15

È possibile sincronizzare la riproduzione di VLC su due macchine diverse? Vorrei che due PC in diverse parti della casa riproducessero lo stesso video, quindi qualsiasi altro suggerimento che risolva questo problema è il benvenuto!

Risposte:


9

Uso il multicast. Questo invia un flusso a tutti i ricevitori contemporaneamente.

La rete ha segmenti cablati e wifi.

Con il multicast, lo stream utilizza solo una volta la sua larghezza di banda su ciascun segmento

Ciò significa anche che tutti i computer ricevono lo stesso pacchetto all'incirca nello stesso momento, meno ritardi di propagazione attraverso i miei switch. I ritardi di propagazione sono trascurabili per l'audio e il video umano visibile (30 fps).

L'unica cosa che può succedere è che diversi computer lavorano in luoghi diversi nella loro cache di rete. Per tenerli il più vicino possibile ho abbassato la cache fino a quando il sistema più lento (un laptop a 32 bit su wifi) inizia a spegnersi a volte, quindi dò un po 'di più.

Motivo: una volta che vlc inizia a mangiare buffer, ci vuole molto tempo per tornare all'inizio del buffer, sembra che la codifica non dia la priorità per tornare a 'zero buffer' ma è comodo rimanere lì.

Sul "server" utilizzo anche due client vlc: uno genera il flusso e non viene visualizzato localmente. L'altro è il client di visualizzazione che ascolta lo stream come tutti gli altri sistemi, con la stessa impostazione della cache di rete.

Nella riga di comando:

client per la generazione di flussi che si connette al flusso di Internet (questo ha una cache grande, quindi non si interrompe e fornisce un flusso costante nella mia rete 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 (che dovrebbe essere su una riga)

Come vedi, viene dato --no-sout-display: viene generato l'output del flusso, ma nessun output locale. Faccio lo stesso, non importa se riproduco file / DVD locali o contenuti di rete.

E assicurati di avere --ttl impostato su> 1 se hai un router wireless da qualche parte. L'ho sempre impostato su 4 per non ottenere "sorprese". Tuttavia, se si dispone di una rete multi-router e gli host su una rete non riescono a vedere il multicast, potrebbe essere necessario alzare quel ttl di una o due tacche (o verificare se il router non fa passare affatto il multicast, non tutti i router wireless sono impostato su quello predefinito).

Su ogni sistema, incluso quello che genera il flusso e ha il VLC non in uscita in esecuzione, ho il seguente VLC:

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

Questo imposta la memorizzazione nella cache della rete nella mia rete e con le prestazioni del sistema più lento al massimo. 0,06 secondi di cache.

Per il suono, ciò corrisponde a una distanza di propagazione a circa 100 piedi, il che significa che se la cache viene consumata al massimo, il sistema lento suona come se fosse a 100 piedi di distanza.

Il mio ritardo di rete è di 0,5 ms o superiore (non il ping, che è uno stack round trip a bassa priorità e diversi ms).

Al mio posto, dove non vedo né ascolto mai simultaneamente due sistemi che sono> 100 piedi di distanza (non faccio esplodere al piano di sopra e nel seminterrato, il vantaggio di farlo in questo modo è di avere lo stesso ovunque senza far saltare l'amplificatore del soggiorno).

Il laptop in camera da letto: se si interrompe troppo spesso, chiudo la cache in locale, non lo sento nel seminterrato o al piano di sopra, e quando sono lì probabilmente ho chiuso gli altri :-).

Molto importante: ogni volta che ho bisogno della transcodifica ho tutti i ricevitori sullo stesso protocollo e codifica, e faccio la transcodifica sul VLC non in uscita che genera il flusso.

Non eseguo la transcodifica sui client multicast. Ciò comporterebbe gravi ritardi poiché ogni sistema ha prestazioni diverse.

Per questo esempio audio non c'è alcuna transcodifica, tutti possono capire le codifiche originate da shoutcast. (in realtà, non ho nemmeno bisogno di transcodificare per vid ... tutti hanno i set di codec completi).

questo aiuta?

Sì, ci sono esempi sulla rete per fare vlc sincronizzato usando il client / master di sincronizzazione di rete e più flussi unicast (una stringa di destinazione lunga 10 miglia sul server :-D).

Tuttavia: lo streaming di unicast su n client su un segmento fa apparire lo stream n volte su quel segmento e più si sale verso il server di origine, maggiore è la moltiplicazione dello stesso flusso che consuma larghezza di banda. Non sarei in grado di vedere il mio video 1080p. Il mio wireless riesce a malapena a gestirne uno, non sempre (56 Mb).

Oh, chiedi come nella GUI:

nella finestra di streaming fai clic su "Altre opzioni" e deseleziona "Riproduci localmente" per l'istanza vlc che genera il flusso (ha come input un file locale, una playlist o un flusso Internet). Lascia la memorizzazione nella cache predefinita (1000ms di cache). Se uno qualsiasi degli altri client non riesce a capire il tuo codec, decidi per uno che tutti capiscono e transcodificano su quello sullo stesso sistema.

Sulle opzioni delle destinazioni si lascia attivo il 'display localmente' predefinito e si cambia la memorizzazione nella cache: gioca con questo (inizia da 100 e abbassalo) fino a quando il tuo sistema più lento si interrompe, quindi imposta tutti i sistemi più veloci sullo stesso. Con buffer brevi: all'avvio di un client sono necessari circa 10-15 secondi di sputtering fino a quando non lo "ottiene".

I miei clienti aumentano del 100% delle volte, ogni volta che interrompo lo streaming continuano ad ascoltare l'indirizzo multicast.

Nessuna porta fornita: il valore predefinito è 1234 ovunque, eseguo un server di origine. Se si esegue più di uno, è necessario fornire un numero di porta in questo modo: ... 239.0.0.1:65535. I miei numeri di esempio: scegliere qualsiasi indirizzo multicast in 239/8. Porte: ho scelto uno sopra 1024 (sì, 1024, perché Microsoft utilizza 1024 anche su MC).

Se nessuno è in ascolto, il flusso non viene visualizzato sulla rete, si avvia solo quando il primo ascoltatore si unisce alla sessione multicast. Quindi, se ne hai definiti dieci e ne ascolti solo uno, allora hai un flusso che consuma larghezza di banda. Se si ascoltano flussi diversi, si ottiene n volte la larghezza di banda consumata per n flussi.

Multicast: la larghezza di banda utilizzata è la stessa per uno o 10000 client per stream.

Usando unicast: ogni client salta sul flusso del mittente in un momento diverso, il che significa che i tuoi ritardi sono ancora presenti anche se si restringerebbe la memorizzazione nella cache. Unicast e multicast funzionano in modo completamente diverso. Ecco perché unicast ha la funzione di sincronizzazione.

Esiste un modo diverso se esegui lo stesso streaming per dire un intero negozio Target: quindi eseguiresti lo streaming unicast con la sincronizzazione con i client satellite vlc e serviremo quelli che si trovano all'interno della "gamma acustica" da lì. Negli uffici ne faccio uno o due per piano, quindi tutti i piani sono strettamente sincronizzati tramite unicast e sincronizzazione di rete. All'interno del pavimento di solito il ritardo di propagazione della rete è molto più breve del ritardo acustico e l'acustica è abbassata in modo da non sentire tutti gli altoparlanti ma solo quelli vicini a te.

mandami una email a sirhelpsalot@gmail.com se hai bisogno di aiuto, potrei metterlo anche su youtube.

:-)


3
Benvenuto in SuperUser e grazie per il tuo contributo! Potresti tagliare un po 'la tua risposta rimuovendo i commenti non necessari? In questo momento è un vero e proprio muro di testo e la risposta effettiva è piuttosto difficile da capire.
Indrek,

1
Quanto è affidabile lo streaming / multicast per la sincronizzazione dei video? Se ho un desktop hex core con VLC e un raspberry pi con omxplayer, quale garanzia ho che omxplayer non impiegherà 3 secondi in più per aprire lo stream?
puk

4

VLC può trasmettere l'output su una rete e riprodurlo localmente, quindi suggerirei di disporre di una macchina per lo streaming dell'output sulla rete, ma spuntare l'opzione "Visualizza localmente" nella scheda "Destinazioni".

Ecco una breve descrizione delle impostazioni da utilizzare per lo streaming.


1

VLC usa (o fa, la documentazione non viene mai aggiornata) ha un modulo chiamato netsync ma, come la maggior parte dei moduli VLC insoliti, è difettoso, a malapena documentato e trascurato. Non l'ho mai fatto funzionare.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.