Qué algoritmo / enfoque usar para sincronizar múltiples reproductores de video

Motivación: Actualmente estoy tratando de sincronizar dos videos en dos Raspis en red. Intenté la transmisión en vivo desde un escritorio (http y udp) pero cada raspi todavía abrió la transmisión con un retraso notable. Luego intenté instalar vlc en el raspi y sincronizar con el escritorio vlc, pero eso tampoco funcionó. Intenté usar un script de shell para iniciar omxplayer casi al mismo tiempo en ambos raspis, y eso también falló. Finalmente, utilicé una secuencia de comandos de C para iniciar los dos omxplayers casi al mismo tiempo, lo que también falló. En última instancia, no creo que sea posible controlar cuándo omxplayer comienza a reproducir el archivo de video.

Progreso actual: Por lo tanto, ahora, estoy modificando el código de omxplayer para sincronizar dos omxplayers usando sockets, pero quiero saber qué enfoque toma vlc al sincronizar sus clientes de video, para no reinventar la rueda. Podría estar equivocado, pero al observar la salida detallada y las declaraciones de depuración, me di cuenta de que un jugador perdería tiempo con respecto al otro, de manera que a medida que se reproducía el video, esta diferencia aumentaría y luego de 2-3 minutos superaría los 200 minutos. Sra. Encuentro esto extremadamente perturbador. Significaría que después de 2 horas, la diferencia sería60*200ms=12000ms o alrededor12s. Pensé que la precisión de la computación moderna sería más parecida a la de un reloj atómico, perdiendo tal vez 1s después de 1000 horas de grabación, por lo que pensé que sería suficiente simplemente sincronizar las fuentes una vez.

Pregunta: Si los diferentes jugadores tienen que estar sincronizados constantemente, ¿cómo lo hace vlc?

¿Espera hasta que haya un retraso notable y un avance / retroceso rápido?¿Avanza / retrocede rápidamente cuando hay alguna diferencia?¿La rectificación de esta diferencia (es decir, las señales de zócalo) causa más retrasos?Dado que pasar a un tiempo distante en el video lleva más tiempo que reproducirse continuamente, ¿cómo predice cuántos segundos avanzar o retroceder rápidamente?Escucho a mucha gente hablargarrapatas (no los insectos), y sobre cómo envía el Master VLCgarrapatas. Sin embargo, lo que no entiendo es cómo se interpretan esos ticks: ¿hace una pausa momentánea de todos los otros jugadores hasta el siguiente tick, o modula elvelocidad del video de alguna manera (si eso es posible sobre la marcha)?

NOTA: No estoy transmitiendo los archivos de video reales, ya que todos se acceden de forma remota a través de NFS en cada uno de los Raspis.

Respuestas a la pregunta(1)

Su respuesta a la pregunta