Watch groups

The way to synchronize playback of a group of users.

In the player side menu there is a group tab.
It will only be enabled when connected to a server.

Group tab

Once in it, you will have an option to create or join a group.
(If you have permission to do so.)

The creator of a group is considered its owner (gold user name) until he leaves.
At that point, another user is promoted to the owner or the group is deleted if there are no users left in it.

Group creation

Group creation

You can also give or take control afterwards.

Group management

The password can be quick copied and changed as well.
(Currently only if you start with a password protected group)

Group password

Others will have to join your group.

Joining group

If you set a password, they will have to provide it as well.

Best approach

  1. Create a group
  2. Play the media file but keep it paused.
    (Optionally seek to the time you want to start watching from)
  3. Wait for everyone to join and become ready. (green status)
  4. Play/Resume

Invite others

Once you have a group set-up, you can send out invites to other users.

Synchronization

The server and player will try their best to keep everyone in the group synchronized.

It starts with replicated play/pause/seek commands sent to the server which then relays them to the rest of the group.
Then as the media plays, everyone in the group sends their current watch time to the server which is also relayed to everyone.

There is a player background process running that keeps track of the difference between the local playback and the group owner.
If that difference goes over a certain threshold it will attempt to reduce it by slightly increasing or decreasing local playback speed.
The playback speed is adjusted by 5% so it shouldn't be noticeable when watching.

Now, it turns out that synchronization is not a simple task when taking internet latency and possible packet loss into account.
I am using TCP connections so loosing a command is pretty much eliminated but latency is something you can not eliminate.

If there are issues with synchronization its usually best to slow down.
Users in a group have ready-state indicators, whenever you do an action that causes them to turn red, it means they are currently not ready to resume playback.

So for the smoothest/best experience it is recommended to wait until everyone is green - ready to go.

Hot-join

There could be a situations where someone joins the group while it is already playing media.
The server will attempt a "hot-join":

  • It will pause playback for the entire group.
  • Seek everyone to the same time (while telling the joining user to load the media at the given time as well)
  • Wait for everyone to become ready
  • Resume

You shouldn't need to do anything when this happens.
However, it is possible for the process to fail if the group doesn't reach ready-status in time.
This will require manual intervention.

Media access

Watch groups have a special ability to by-pass regular access control.