I set this up in the most hacky way 10 years ago with my girlfriend. We would watch dvds together and I wanted to synchronize them (especially important for comedies)
My setup? An app that would monitor DVD Player for events while listening to events over iChat using AppleScript.
If someone paused or played the DVD, the moitoring process would notice the event, make a JSON payload representing the action including the local timestamp, and use AppleScript to post an iChat message. Then, the process on the other side, would see the special iChat message (forwarded via AppleScript), and apply the action to the local DVD player process, taking into account the difference between the sent timestamp and the local timestamp.
It worked like a charm and made watching movies so much more fun. We always had iChat open anyway so it seemed like an easy win to piggy back on that, no server needed.
My cousin and I used to do this manually all the time via IM when we were younger. We watched whole shows together that way. Also we used the IM for live commentary.
3
2
1
play!
...
omg, he did not just do that!
...
whaaaaat?!
...
pause, brb
back, where are you?
23:51
okay, ready.
3
2
1
play!
...
omg, i can't believe that just happened. next ep?
yea. hold on..
ready
3
2
1
play!
If anyone is looking for this, but for offline videos (where every person has a local copy of the video), that exists and is called "syncplay". Very convenient when you want to watch and comment on movies with distant friends in real time.
I’ve always wished Netflix had this built in. If it didn’t support syncing between the same account it would even voluntarily cut down on account sharing.
Netflix actually had a feature on the original Xbox that allowed you to create a group with your friends and watch videos together. Unfortunately, they removed this feature a while ago.
I've worked on this for a personal project (that never shipped), specially for music videos so the synchronization needed to be very precise. In the end, I implemented a basic NTP server via websockets to synchronize all clients on the same clock and then just send them the start timestamp of the YouTube video. I achieved sub 50ms sync 75% of the time, making it work for the last 25% was much harder than I expected.
My setup? An app that would monitor DVD Player for events while listening to events over iChat using AppleScript.
If someone paused or played the DVD, the moitoring process would notice the event, make a JSON payload representing the action including the local timestamp, and use AppleScript to post an iChat message. Then, the process on the other side, would see the special iChat message (forwarded via AppleScript), and apply the action to the local DVD player process, taking into account the difference between the sent timestamp and the local timestamp.
It worked like a charm and made watching movies so much more fun. We always had iChat open anyway so it seemed like an easy win to piggy back on that, no server needed.
An inelegant hack, but it worked.