Watch Synchronized Videos With Your Remote Friends Using Syncplay (Linux, macOS, Windows) Apps How To synchronization video

Syncplay is a free and open source tool to synchronize media players with remote friends to watch videos together, available for Microsoft Windows, macOS, Linux and *BSD. It supports mpv, VLC, MPC-BE and MPC-HC, with each user being able to use any of these media players.

The application synchronizes the position and play state of the media player over the Internet, allowing all viewers to watch the same video in the same time. So when one viewer seeks, pauses or unpauses a video, this is applied to all viewers / media players that are in the same Syncplay room, on the same server.

You can choose to use one of the free public Syncplay servers, or you can host your own public or private Syncplay server, be it on Windows, macOS, Linux (including Raspberry Pi).

Besides this, Syncplay also features:

  • Play local (with shared playlist) or online videos supported by youtube-dl (on my computer this worked with mpv, but it didn’t work with VLC)
  • The synchronized viewing is done through a chat-like root so you can… chat with the other participants, see their player state, etc. You can also chat with others through mpv (on top of the mpv player window)
  • Can automatically pause video in case a user is disconnected
  • Includes options to deal with lagging, like fast-forwarding / rewinding or slowing down on desync
  • Can show OSD messages on top of the video player with various events (e.g. users that are / not ready, etc.)



It’s important to note that all users (viewers) must have the same local video they want to play. Syncplay doesn’t stream videos between users, it does not synchronise player configuration, audio/subtitle track selection or volume.

How to use Syncplay to watch videos in sync with your remote friends

All the viewers that want to join this synchronized playback must perform the steps below.

What you’ll need:

  • Syncplay. On Linux it’s available as an AppImage (to run it you’ll need to right click the .AppImage, click Properties, go to the Permissions tab and enable Allow executing file as program; this depends on the file manager you’re using, but it should be somewhat similar in most cases) or snap from the Snap Store
  • mpv, VLC, MPC-BE or MPC-HC (the Syncplay website says mpv has the best compatibility with Syncplay). For VLC, Syncplay should automatically install a LUA script (syncplay.lua); in case this does not happen you’ll need to install it yourself (get it from here)
  • optional: youtube-dl to be able to play online videos supported by it when using mpv (on Windows you can place the downloaded youtube-dl.exe next to mpv.exe, and mpv will pick it up automatically)

In my testing I’ve used mpv with a public Syncplay server, and the instructions below assume that you’re using the same. If you want to run your own server, see this guide.

It’s worth noting that on Windows, Syncplay server is available in the downloaded binary but it’s not on Linux, so on the latter you’ll need to clone the Syncplay GitHub repository which contains syncplayServer.py.




With these requirements satisfied, this is how to use Syncplay to watch videos in sync with your remote friends.

1. Configuring Syncplay

Watch Synchronized Videos With Your Remote Friends Using Syncplay (Linux, macOS, Windows) Apps How To synchronization video

When starting Syncplay you’ll notice it asks for a server address, username, default room, etc. This is what you must set:

  • Server address: all users/viewers must select the same server from the public server list, e.g. syncplay.pl:8997. The Syncplay website recommends avoiding the public servers running on ports 8995 and 8999 because they lag, due to the majority of people using them
  • Server password (if any): don’t enter any password here since this is only for private servers
  • Username: use any username you want (different for each viewer)
  • Default room: enter the same room name on every computer on which you want to sync the playback. The playback will only be synchronized with others in this room on the same server. Room names are case-sensitive. Since public servers don’t have a password, I’d say to use a complicated room name (as a password replacement) so uninvited guests can’t guess your room name and hijack it
  • Path to media player: Syncplay guessed the path to the media player in my case, but it case it doesn’t for you, enter the path to mpv, VLC or whatever media player each viewer wants to use

2. Run/connect Syncplay

In the Syncplay window you’ll see a large button saying Click Store configuration and run Syncplay – click it. This opens the configured media player (e.g. mpv) and joins the room you’ve entered in the Syncplay settings:

Watch Synchronized Videos With Your Remote Friends Using Syncplay (Linux, macOS, Windows) Apps How To synchronization video

3. Playing the same synchronized video for all viewers

Watch Synchronized Videos With Your Remote Friends Using Syncplay (Linux, macOS, Windows) Apps How To synchronization video
Left: Ubuntu 20.04 running in VirtualBox with Syncplay / Right: my actual Linux desktop with Syncplay; both are playing the same, synchronized video

Playing a video now is as simple as dragging and dropping the video on top of the media player window (you may also open a video or link from the Syncplay File menu). Each viewer must do this. The file doesn’t have to be the same in case of drag’n’drop (it’s different when using the shared playlist – see further down below), but its duration should be the same.

In the same way you can also drag and drop a YouTube link from a web browser to the media player window to play it in sync with all the viewers (all viewers must do this, using the same link).

It’s worth noting that the domain from where you drag and drop the link must be whitelisted in Syncplay, and only youtube.com (and youtu.be) is whitelisted by default. Add any domains you want to the Trusted domains list in the Syncplay settings (when Syncplay is not connected: enable Show more settings at the bottom of the Syncplay window, then click on Sync in the sidebar and you’ll see a list of trusted domains that you can edit; when Syncplay is connected: from its Advanced menu -> Set trusted domains).

Once everybody has the video ready to play, press SPACE to mark yourself as being ready and start playing the video. Or click the I'm ready to watch checkbox at the bottom of the Syncplay window, and when everyone is ready, focus the media player window and start playing using SPACE.

Whenever a viewer pauses, unpauses, or skips, this action is applied to all viewers / media players connected to the same room on the same server.

More

Another way to play videos is to drag and drop them to the shared playlist in the Syncplay window. But before doing this, you must add the folders containing the media files you want to play: right click inside the shared playlist, select Set Media Directories, and choose the folder containing the videos you want to play (don’t add a directory with a large number of files as Syncplay may have issues scanning it). Each viewer must do this. Next, drag and drop a video file from this folder in the Syncplay shared playlist – the same file must be present for all viewers in the added media directory, and have the exact same filename (unlike when dragging and dropping a video on top of the media player window).

If the filename is shown in red color in the shared playlist, it means the file was not found on all the computers connected to this room. When the file is found on all computers, its color turns black. Select it in Syncplay, focus the media player and press SPACE to mark yourself as ready and play it.

Want to chat with the other viewers on top of the mpv video player window? Press Enter, type your message, then press Enter again to send the message. The position, font, color, etc., can be configured from the Synplay settings (enable Show more settings to access this).

h/t teruakohatu on HN