Pull to refresh

Смотрим видео вместе или синхронизация VLC

Reading time 2 min
Views 6.6K
Не так давно у меня возникла необходимость синхронизации видео на двух компьютерах. Гугление готовых решений ничего не дало, поэтому решил реализовать данный сервис своими силами. В качестве просмотрщика видео была выбрана программа VLC. Решил поделиться результатами труда и с вами. Думаю, что найдутся люди, кому эта программа будет полезна.

Зачем она нужна?
  • Вы хотите посмотреть фильм с друзьями/знакомыми вместе, но ехать друг к другу или в кинотеатр лень.
  • Необходимо вывести одно и то же видео на нескольких мониторах, подключенных к разным компьютерам.
  • Необходимо управлять воспроизведением видео удалённо.


Как это работает?

Программа состоит из двух частей: клиентской и серверной. Серверная часть запускается на одном из компьютеров и играет роль эхо-сервера с небольшой особенностью: сообщения, полученные от одного из клиентов, отправляются всем подключенным клиентам, кроме его самого. Клиентская часть, в свою очередь, запускается на каждом компьютере с работающим vlc плеером и осуществляет управление работой vlc с одной стороны и общение с сервером с другой. Если на одном из компьютеров пользователь нажимает на паузу, клиентская часть обрабатывает это событие и тут же отправляет на сервер. Сервер передаёт это событие всем остальным клиентам и на остальных компьютерах воспроизведение тоже останавливается. Аналогичный процесс происходит во время запуска на воспроизведение или перемотки.

Также к серверу можно присоединиться и с помощью обычного telnet клиента и управлять воспроизведением с помощью консоли, посылая те или иные команды на сервер. Команды следующие:
1. pause – приостанавливает воспроизведение
2. start – запускает воспроизведение с текущего момента
3. seek — изменяет текущую позицию на N миллисекунд от начала (пример: seek 60000)
4. play — запускает воспроизведение, начиная с позиции N миллисекунд от начала.

Для работы программ необходима операционная система семейства Linux или же Cygwin под Windows с установленными библиотеками glib-2.0 и dbus-glib-1.

Как запустить?

Да очень просто:
./server 0.0.0.0 9888
./client 192.168.0.5 9888
Где 0.0.0.0 – адрес сетевого интерфейса (в данном случае все интерфейсы), на котором будет запущен сервер, 192.168.0.5 – адрес сервера, 9888 – порт (может быть указан любой другой, но один и тот же). Любое из приложений может быть штатно остановлено с помощью комбинации Ctrl+C. Если по каким-то причинам программа-клиент не запускается, проверьте, запущен ли сервер (а также правильность его адреса) и vlc плеер. Если всё запустилось, можете смело открывать нужную видеозапись на компьютерах и жать на play на каком-либо их них.
Также в vlc необходимо включить возможность управления через d-bus. Это делается здесь: Инструменты -> настройки -> показывать настройки: все -> интерфейс -> элементы управления -> галочка на «интерфейс управления d-bus». Возможно, потребуется перезапуск vlc.

Скачать исходный код можно здесь, скомпилированную версию здесь.
Tags:
Hubs:
+9
Comments 2
Comments Comments 2

Articles