Skip to content

vBACARAv/framesync

Repository files navigation

FrameSync

FrameSync - desktop-приложение для совместного просмотра фильмов с друзьями.

Программа создает временную комнату, синхронизирует воспроизведение между участниками и помогает всем смотреть один и тот же фильм в одном темпе. Хост выбирает torrent-файл или magnet-ссылку, а гости получают источник раздачи и запускают воспроизведение локально через собственный torrent-движок и внешний mpv-плеер.

Для чего это нужно

FrameSync сделан для простого сценария: выбрать фильм, создать комнату, отправить invite-код друзьям и смотреть вместе. Приложение берет на себя синхронизацию паузы, перемотки, статусов готовности и базового общения в комнате.

Основная идея - не передавать видеопоток от хоста всем гостям, а синхронизировать локальное воспроизведение. Каждый участник скачивает и читает фильм у себя, поэтому просмотр не требует отдельного VPS или постоянного медиасервера.

Особенности

  • Комнаты для совместного просмотра без отдельного сервера.
  • Передача гостям torrent-источника, а не видеопотока хоста.
  • Локальный libtorrent-движок для каждого участника.
  • Воспроизведение через mpv, поэтому дорожки, субтитры и поведение плеера остаются привычными.
  • Синхронизация паузы, продолжения и позиции воспроизведения.
  • Статусы участников: видно, кто подключен и кто готов к просмотру.
  • Встроенный чат комнаты.
  • Portable-сборка для Windows: приложение можно передать папкой, без установки.
  • Отдельный FrameSync Updater.exe рядом с основным приложением для обновления portable-версии.
  • Кэш хранится рядом с portable-приложением, его можно очистить вручную.
  • При закрытии приложение спрашивает, нужно ли очистить кэш.
  • Интерфейс автоматически выбирает русский или английский язык при первом запуске по языку системы.

Почему такой подход удобен

FrameSync хорошо подходит для небольшого круга друзей, когда нужно быстро организовать совместный просмотр без настройки сервера, аккаунтов и сложной инфраструктуры.

Плюсы подхода:

  • хосту не нужно отдавать всем полноценный видеопоток;
  • гости используют свои локальные torrent-соединения;
  • invite-код проще, чем ручная настройка сети;
  • приложение можно держать на флешке, в облачной папке или просто отправить архивом;
  • обновления можно получать через GitHub Releases и отдельный updater;
  • пользователь сам контролирует кэш и может оставить скачанный фильм на потом.

Как работает просмотр

  1. Хост выбирает .torrent или magnet-ссылку.
  2. FrameSync запускает локальный libtorrent-движок и готовит фильм к воспроизведению.
  3. Хост создает комнату и отправляет invite-код друзьям.
  4. Гости подключаются к комнате, получают torrent-источник и запускают свой локальный torrent-движок.
  5. Участники открывают фильм во внешнем mpv-плеере.
  6. FrameSync синхронизирует состояние просмотра между участниками.

Обновления

FrameSync проверяет публичные GitHub Releases:

https://github.com/vBACARAv/framesync/releases/latest

Для обновления нужно публиковать release с тегом вида v0.1.3 и прикладывать ZIP-asset с portable-win-x64 в имени, например:

FrameSync-0.1.3-portable-win-x64.zip

Portable-папка содержит FrameSync Updater.exe рядом с FrameSync.exe. Updater проверяет последний release, скачивает ZIP, запускает служебный процесс замены файлов и сохраняет пользовательские данные:

  • user-data
  • FrameSyncCache

После обновления FrameSync нужно открыть вручную.

Сборка

npm run dev
npm run lint
npm run test
npm run build
npm run build:portable
npm run build:portable:zip

npm run build:portable собирает portable-папку:

release/FrameSync-<version>-portable-win-x64

npm run build:portable:zip дополнительно создает ZIP для GitHub Releases:

release/FrameSync-<version>-portable-win-x64.zip

Стек

  • Electron
  • Vite
  • React
  • TypeScript
  • Rust sidecar для libtorrent
  • mpv
  • electron-builder

Runtime Assets

Portable-сборки включают необходимые runtime-компоненты:

  • mpv
  • cloudflared
  • libtorrent sidecar
  • updater sidecar

Generated runtime folders, caches, logs, build output, and packaged releases are ignored by Git.

Поддержать разработчика

Если FrameSync оказался полезен, можно поддержать разработку:

  • BTC: bc1qzfekg8v39lfjn7eepwy2jkq6xvz9lgg9ekjd06
  • ETH: 0xe48422AE1B65728Bc2F192112bAB5A601a4f11D3

About

Desktop app for synchronized movie watching with friends using local torrent playback and mpv.

Topics

Resources

Stars

Watchers

Forks

Contributors