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.
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
You can also give or take control afterwards.
The password can be quick copied and changed as well.
(Currently only if you start with a password protected group)
Others will have to join your group.
If you set a password, they will have to provide it as well.
Best approach
- Create a group
- Play the media file but keep it paused.
(Optionally seek to the time you want to start watching from) - Wait for everyone to join and become ready. (green status)
- 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.