Thank you all for endorsing and joining the multi-device timing group!
To start out with something a bit inspirational, here is a little demo we made highlighting one of the more trivial use-cases for multi-device timing – collaborative video.
The demo shows a chrome browser and a firefox browser playing the same video at the same time. The demo aims to expose current limitations of timed operations with HTML5.
You will notice that the video is a screen capture, so the two browsers are in fact running on a single device. However, there is no local communication going on. The two browsers are completely ignorant of each other. They are only connected across the Internet, via Shared Motion, our implementation of multi-device timing. So, running this demo on multiple devices is only a matter of opening the link on multiple devices.
Some nerdy details below:
It’s a horribly difficult video to synchronise due to all the changes in angles, flashes and hefty rhythms, but we like a challenge.
The video is 30 frames pr second, while our screen (used for screen recording) refreshes 60 times pr second. Ideally, the browsers should update the frame shown on the screen every second refresh of the screen. But. as our browsers are not synchronised with the video card, we tend to hit the right frame, but some times at the wrong time with respect to the video card! So instead of having both browsers showing frame X in two frames, one will show it first, then both, then the last one. This is surprisingly visible with large blinks, large movements and so on.
We also focus a bit on reloading, as this is important in the Web domain. The multi-device timing service gives precise timing info within fractions of a second, but the video needs to spends more time to adjust. We are using variablePlaybackrate to adjust slowly, as this generally gives the best user experience.
The multi-device timing service is much more precise than the video though, so a point to take away is that the HTML5 video element is really the weak point here with regard to precise timing. This is something we would like this CG to address.
Another point worth noting is that this kind of precision in multi-device HTML5 playback, though feasible, is by no means easy. Our results depends on the development of specific technical concepts for synchronisation (MediaStateVectors) as well as dedicated engineering efforts.
Ingar and Njål