14

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

4 ответа4

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 и нескольких одноадресных потоков (целевая строка длиной 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.

:-)

4

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

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

1

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

1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .