Jaki algorytm / podejście wykorzystać do synchronizacji wielu odtwarzaczy wideo

Motywacja: Obecnie próbuję zsynchronizować dwa filmy na dwóch połączonych w sieć raspisach. Próbowałem transmisji na żywo z pulpitu (http i udp), ale każdy raspi nadal otwierał strumień z zauważalnym opóźnieniem. Następnie spróbowałem zainstalować vlc na raspi i synchronizować z vlc na pulpicie, ale to też nie zadziałało. Próbowałem użyć skryptu powłoki, aby uruchomić omxplayer w tym samym czasie na obu raspisach, i to też się nie powiodło. W końcu użyłem skryptu C do uruchomienia dwóch odtwarzaczy omx w niemal identycznych czasach, co również nie powiodło się. Ostatecznie nie sądzę, aby można było kontrolować, kiedy omxplayer zaczyna rzeczywiście odtwarzać plik wideo.

Aktualny postęp: Dlatego teraz modyfikuję kod omxplayera, aby zsynchronizować dwa odtwarzacze omxplayera za pomocą gniazd, ale chcę wiedzieć, jakie podejście ma coś podobnego do vlc podczas synchronizacji klientów wideo, aby nie odkrywać na nowo koła. Mógłbym się mylić, ale zauważyłem, patrząc na pełne informacje o wynikach i debugowaniu, że jeden gracz straci czas w stosunku do drugiego, tak że podczas odtwarzania wideo ta różnica się zwiększy i po 2-3 minutach przekroczy 200 ms. Uważam to za niezwykle niepokojące. Oznaczałoby to, że po 2 godzinach różnica będzie60*200ms=12000ms lub dookoła12s. Myślałem, że precyzja współczesnych obliczeń będzie bardziej podobna do zegara atomowego, tracąc może 1s po 1000 godzinach nagrań, dlatego pomyślałem, że wystarczy raz zsynchronizować kanały.

Pytanie: Jeśli różne odtwarzacze muszą być synchronizowane niezmiennie, jak coś takiego robi vlc?

Czy czeka do zauważalnego opóźnienia i szybkiego przewijania do przodu / do tyłu?Czy jest szybszy do przodu / do tyłu, gdy istnieje jakakolwiek różnica?Czy samo naprawienie tej różnicy (np. Sygnałów gniazda) powoduje dalsze opóźnienia?Ponieważ przejście do odległego czasu w filmie trwa dłużej niż ciągłe odtwarzanie, w jaki sposób można przewidzieć, ile sekund należy przewinąć do przodu / do tyłu?Słyszę wiele osób mówiącychkleszcze (nie insekty) i o tym, jak wysyła mistrz vlckleszcze. Nie rozumiem jednak, w jaki sposób te kleszcze są interpretowane: czy chwilowo wstrzymujesz wszystkich innych graczy do następnego tiku, czy też modulujeszprędkość wideo w jakiś sposób (jeśli jest to możliwe w locie)?

UWAGA: Nie przesyłam strumieniowo rzeczywistych plików wideo, ponieważ wszystkie są dostępne zdalnie za pośrednictwem NFS na każdym z raspisów.

questionAnswers(1)

yourAnswerToTheQuestion