Синхронизируйте проигрыватели VLC на двух машинах


15

Можно ли синхронизировать воспроизведение VLC на двух разных машинах? Я хотел бы, чтобы два компьютера в разных частях дома воспроизводили одно и то же видео - поэтому любые другие предложения, которые могут решить эту проблему, также приветствуются!

Ответы:


9

Я использую многоадресную рассылку. Это отправляет один поток всем получателям одновременно.

В сети есть проводной и вайфай сегменты.

При многоадресной передаче поток использует только один раз пропускную способность в каждом сегменте

Это также означает, что все компьютеры получают один и тот же пакет примерно в одно и то же время, меньше задержки распространения через мои коммутаторы. Задержки распространения незначительны для звука и видео, видимого человеком (30 кадров в секунду).

Единственное, что может случиться, - это то, что разные компьютеры работают в разных местах сетевого кэша. Чтобы держать их как можно ближе, я отключил кеширование до тех пор, пока самая медленная система (32-битный ноутбук на Wi-Fi) не начнет иногда отключаться, а затем дать ей немного больше.

Причина: когда vlc начинает использовать буфер, требуется много времени, чтобы вернуться к началу буфера, кажется, что кодирование не имеет приоритета для возврата к «нулевому буферу», но удобно оставаться там.

Я также использую на «сервере» два клиента vlc: один генерирует поток и не отображает его локально. Другой - клиент отображения, который слушает поток, как и все другие системы, с той же настройкой сетевого кэша.

В командной строке:

клиент, генерирующий поток, который подключается к интернет-потоку (у него большой кэш, поэтому он не отключается и доставляет постоянный поток в мою многоадресную сеть):

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 (это должно быть в одной строке)

Как видите, --no-sout-display дается: вывод потока генерируется, но не выводится локально. Я делаю то же самое, независимо от того, играю ли я локальные файлы / DVD или сетевой контент.

И убедитесь, что для --ttl установлено значение> 1, если у вас где-то есть беспроводной маршрутизатор. Я всегда устанавливал его на 4, чтобы не получать «сюрпризы». Однако, если у вас сеть с несколькими маршрутизаторами, а узлы в одной сети не могут видеть многоадресную рассылку, то вам может потребоваться включить эту отметку на две метки (или проверить, действительно ли ваш маршрутизатор пропускает многоадресную рассылку, не все беспроводные маршрутизаторы установить по умолчанию).

На каждой системе, в том числе той, которая генерирует поток и работает не выводящий vlc, у меня есть следующий vlc:

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

Это устанавливает кеширование сети в моей сети и максимальную производительность самой медленной системы. 0,06 секунд кеша.

Для звука это соответствует расстоянию распространения примерно до 100 футов, что означает, что если кэш-память съедена до максимума, то медленная система звучит так, как если бы она находилась на расстоянии 100 футов.

Моя сетевая задержка составляет 0,5 мс или лучше (не ping, это двусторонний стек с низким приоритетом и несколько мс).

В моем месте, где я никогда не вижу и не слышу одновременно две системы, которые находятся на расстоянии> 100 футов друг от друга (я не взрываюсь наверху и в подвале, преимущество в том, чтобы делать это одинаково везде без взрыва усилителя в гостиной).

Ноутбук в спальне: если он выключается слишком часто, я просто включаю его кэш локально, я не слышу его в подвале или наверху, и когда я там, я, вероятно, отключаю другие :-).

Очень важно: всякий раз, когда мне нужно транскодирование, у меня все приемники по одному и тому же протоколу и кодированию, и я делаю транскодирование на не выводящем vlc, который генерирует поток.

Я не транскодирую на многоадресных клиентах. Это может привести к плохим задержкам, поскольку каждая система отличается по производительности.

Для этого аудио примера транскодирование вообще отсутствует, все могут понять кодировки, созданные shoutcast. (на самом деле, мне также не нужно перекодировать для VID ... у всех есть полные наборы кодеков).

Это помогает?

Да, в сети есть примеры выполнения синхронизированного vlc с использованием --network-synchronization master / client и нескольких одноадресных потоков (целевая строка длиной 10 миль на сервере :-D).

Тем не менее: потоковая одноадресная передача n клиентам в сегменте заставляет поток появляться n раз в этом сегменте, и чем выше вы идете к исходному серверу, тем больше умножений одного и того же потока потребляют пропускную способность. Я не смог бы увидеть мое видео 1080p. Моя беспроводная связь едва справляется с одной из них, не всегда (56 Мб).

О, вы спросите, как в GUI:

в окне потоковой передачи нажмите «дополнительные параметры» и отмените выбор «играть локально» для экземпляра vlc, который генерирует поток (имеет в качестве входных данных локальный файл, список воспроизведения или интернет-поток). Оставьте кеширование по умолчанию (кеш на 1000 мс). Если кто-либо из других клиентов не может понять ваш кодек, выберите тот, который все понимают, и перекодируйте его в ту же систему.

В параметрах адресатов вы оставляете «локальный дисплей» по умолчанию включенным и меняете кеширование: поиграйте с этим (начните с 100 и уменьшите его), пока ваша самая медленная система не отключится, а затем установите все более быстрые системы на то же самое. С короткими буферами: когда клиент запускается, требуется от 10 до 15 секунд распыления, пока он не «получит его».

Мои клиенты работают 100% времени, когда я прекращаю потоковую передачу, они просто продолжают слушать многоадресный адрес.

Порт не указан: по умолчанию 1234, я запускаю один исходный сервер. Если вы запускаете более одного, вам нужно указать номер порта следующим образом: ... 239.0.0.1:65535. Мои примеры номеров: выберите любой адрес многоадресной рассылки в 239/8. Порты: выбрал любой выше 1024 (да, 1024, потому что Microsoft использует 1024 также на MC).

Если никто не слушает, то поток вообще не отображается в сети, он запускается только после того, как первый слушатель присоединяется к многоадресному сеансу. Таким образом, если вы определили десять и прослушали только один, то у вас есть один поток, потребляющий пропускную способность. Если вы слушаете разные потоки, вы получаете n раз пропускную способность, съеденную для n потоков.

Многоадресная рассылка: используемая пропускная способность одинакова для одного или 10000 клиентов на поток.

Использование одноадресной рассылки: каждый клиент переключается на поток отправителя в разное время, что означает, что ваши лаги по-прежнему присутствуют, даже если вы бы сократили кеширование. Unicast и multicast работают совершенно по-разному. Вот почему одноадресная передача имеет функцию синхронизации.

Существует другой способ, если вы передаете одно и то же, скажем, целое хранилище Target: тогда вы будете транслировать одноадресную передачу с синхронизацией на спутниковые клиенты VLC и обслуживать тех, кто находится в «акустическом диапазоне» оттуда. В офисах я делаю один или два на каждом этаже, поэтому все этажи тесно синхронизированы с помощью одноадресной и сетевой синхронизации. Обычно в пределах пола задержка распространения в сети намного меньше, чем задержка звука, а звук отключен, поэтому вы слышите не все динамики, а только те, которые находятся рядом с вами.

напишите мне на sirhelpsalot@gmail.com, если вам нужна помощь, я мог бы поставить это на YouTube.

:-)


3
Добро пожаловать в SuperUser и спасибо за помощь! Не могли бы вы немного урезать свой ответ, удалив ненужные комментарии? Прямо сейчас это настоящая стена текста, и фактический ответ довольно трудно понять.
Индрек

1
Насколько надежна потоковая / многоадресная передача для синхронизации видео? Если у меня есть рабочий стол с шестнадцатеричным ядром, на котором запущен VLC, и raspberry pi, на котором запущен omxplayer, какова гарантия того, что omxplayer не займет больше 3 секунд, чтобы открыть поток?
Пук

4

VLC может транслировать выходные данные по сети, а также воспроизводить их локально, поэтому я хотел бы предложить, чтобы у вас была одна машина, транслирующая выходные данные по сети, но отметьте опцию «отображать локально» на вкладке «места назначения».

Вот небольшое описание настроек для потоковой передачи.


1

VLC использует (или делает, документация никогда не обновляется), чтобы иметь модуль netsync, но, как и большинство необычных модулей VLC, он глючит, едва документирован и им пренебрегают. Я никогда не заставлял это работать.


1

Как сказал spc-stm, VLC позволяет синхронизировать потоковую передачу. Проверьте это: http://www.hackedexistence.com/project-vlc.html


2
Добро пожаловать в Супер пользователя! Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить сюда основные части ответа и предоставить ссылку для справки.
Slhck
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.