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

    Не так давно у меня возникла необходимость синхронизации видео на двух компьютерах. Гугление готовых решений ничего не дало, поэтому решил реализовать данный сервис своими силами. В качестве просмотрщика видео была выбрана программа 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.

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

    Комментарии 2

      +1
      VLC сила. сколько бы про него не знал, он не устает удивлять =) Спасибо за очередной типс по этой программе.
      • НЛО прилетело и опубликовало эту надпись здесь

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое