What Syncplay is/does

About Syncplay

Syncplay allows people to enjoy a shared viewing experience even if they are thousands of miles apart, so friends can watch anime, movies, TV shows and other media together. The Syncplay Client launches a media player on your computer, connects to a Syncplay server and joins a virtual room on that server. Pauses, unpauses and seeks made within that media player instance are relayed to fellow viewers via the server to allow for these actions to be replicated by the media players of everyone else in the same virtual room. The server keeps track of where everyone is in the video so if someone joins they can be brought to the right place, and so if someone is too far ahead they can be brought back in sync.

Syncplay can also share information about what files people are playing to make it easier for viewers to confirm they are playing the same file (or be warned if they are playing different files). Users can choose what file information is sent to the server in plain text, sent hashed, or not sent at all. Official public Syncplay servers operate in ‘room isolation’ mode, meaning any information sent by clients is only passed on to others in the same virtual room, and people cannot see what rooms currently exist. People can run their own private password protected Syncplay server. See the Support section for information on Syncplay usage.

Syncplay Topology

Simplified Syncplay Topology

What does Syncplay not do?

Syncplay does not use video streaming or file sharing so each user must have their own copy of the media to be played (although if their media player supports it and connection was fast enough, the user could play a stream such as Youtube in their media player, play a file from a network share, or be downloading a file from a HTTP server and playing it at the same time). Syncplay does not synchronise player configuration, audio/subtitle track selection or volume. Users must manually choose what file to play as Syncplay does not synchronise which file is open. Syncplay does not provide a voice chat platform to allow for discussion during playback as Syncplay is intended to be used in conjunction with a third-party communications solution such as Mumble. Syncplay does not use encryption, so someone with the ability to spy upon your network traffic could monitor filenames (although in settings you can set these to be hashed or not sent) or in Syncplay 1.5.0 chat messages (although you can use third-party chat solutions with encryption or speak in code).

Syncplay behaviour

Syncplay’s behaviour is pretty much what you’d expect and is all set out in the source code, but we’ve summarised it for those who are interested.

The client affects the following files:

  • Creating/modifying .syncplay / syncplay.ini file in %APPDATA% (or $HOME on Linux version) folder to store configuration information.
  • Creating/modifying  .syncplay.log file in %APPDATA% (or $HOME on Linux version) to store debug information when Syncplay encounters certain problems.
  • Creating/modifying QSettings to store GUI path and window state data.
  • The installers do the obvious in terms of installing Syncplay, adding syncplay-vlc.lua to the VLC directory (if relevant), etc.
  • Keeps syncplay-vlc.lua updated when running VLC.

The following information is sent from the client to the server:

  • Public IP address of client and other necessary routing information (as per TCP/IP standards).
  • Media position, play state, and any seek/pause/unpause commands (associated with the instance of the media player initiated by Syncplay).
  • Size, duration, and filename of media currently open in the relevant media player instance (although this information can optionally be hashed or not sent).
  • Syncplay version, username, server password and current ‘room’.
  • Ping responses to assess latency (used to help keep people in sync even if their connection is slow).
  • The current shared playlist, which is sent in plaintext.
  • Any chat messages (if you’re on Syncplay 1.5.0+), which are sent in plaintext (so don’t send anything sensitive).

Note: The current official build of the Syncplay server does not store any of this information. However, some of the information (not the IP address) is passed on to other users connected to the server (or just to those in the same room if ‘isolation’ mode is enabled).

In terms of what the server sends to other clients, this is:

  • Media position, play state, and any seek/pause/unpause commands (associated with the instance of the media player initiated by Syncplay) – this can reveal information on your latency/ping
  • Size, duration, and filename of media currently open in the relevant media player instance (although this information can optionally be hashed or not sent).
  • Syncplay version, Syncplay username, and current ‘room’
  • Any requests to change the playlist
  • Any chat messages (if you’re on Syncplay 1.5.0+), which are sent in plaintext (so don’t send anything sensitive)

If you are on a public server (e.g. the official syncplay.pl server) then ‘room isolation’ means that only others in the same room is sent the above information.

The server has the ability to affect / control the following aspects of the instance of the media player initiated by Syncplay:

  • Current position (seek commands).
  • Current play state (pause and unpause commands).
  • Currently playing file if shared playlists are enabled (only opens files located in user-specified media directories or on whitelisted websites)

The following aspects of the media player are affected, but not controlled, by the server:

  • OSD / On-screen display (for the display of messages).
  • Playback rate (for slowdown due to time difference).

You can load a file via the Syncplay Client, but this is not controlled by the Syncplay Server. Storing data in the .syncplay / syncplay.ini file can be disabled by using the --no-store command-line switch (see ‘Command-line switches’ section of the Client  Guide)

Relevant information is sent to syncplay.pl via a HTTPS  request for the following optional services:

  • Public server list (user-initiated)
  • Syncplay update checking (user-enabled)