Doing initial tests on a desktop computer (Firefox) and an iPad (Safari, iOS 12), the video does sync, but it’s hundreds of milliseconds (and sometimes full seconds) off.
If I make a suggestion to tighten this up:
Take a page from NTP’s book, and measure the amount of time it takes for the network request to get there, then compensate locally.
From www.ntp .org/ntpfaq/NTP-s-algo.htm
“Synchronizing a client to a network server consists of several packet exchanges where each exchange is a pair of request and reply. When sending out a request, the client stores its own time (originate timestamp) into the packet being sent. When a server receives such a packet, it will in turn store its own time (receive timestamp) into the packet, and the packet will be returned after putting a transmit timestamp into the packet. When receiving the reply, the receiver will once more log its own receipt time to estimate the travelling time of the packet. The travelling time (delay) is estimated to be half of “the total delay minus remote processing time”, assuming symmetrical delays.”
(I would personally suggest video time as the timestamp, but I have no knowledge of the back-end code)
Typically NTP waits for 5 exchanges before it has enough to trust the numbers, but even doing a single exchange on each command would likely drop the possible difference to under 100ms.