Sync video play over network

Posted by Nemesis on Stack Overflow See other posts from Stack Overflow or by Nemesis
Published on 2011-03-11T07:22:51Z Indexed on 2011/03/11 8:10 UTC
Read the original article Hit count: 165

Filed under:
|
|
|

Hi,

I have made a media player that plays basically anything that's scheduled to it via a text file. The player can also play the exact same clip on multiple machines(PC's). The problem is the syncing. The same video starts playing on each of the machines, but they are out by about 400ms, which looks crap and if there's sound it's even worse.

What I do at the moment is:

One machine is set up as the master and all other machines are set up as slaves. The master decides what item will be played. It waits for a message from each of the slaves, once all slaves are connected (or after the timeout), it broadcasts the item id of the file that needs to be played. All machines then start playing that file.

What I also tried:

I thought that the file loading time might be the major driving factor in the sync mismatch, so I chankged the code to do the following.

The master still decides what file to play. It waits for the connect message from each slave (or timeout) and transmits the item id of the file to play. All machines start playing that file but pauses it immediately. The master then again waits for a ready message from each of the slaves. As soon as all slaves responded the master sends a play message to all slaves. All machines then continue the file.

This unfortunately did not improve the problem. I am now pretty sure the sync mismatch is due to network delay. How can I compensate for this? Or maybe determine the delay to each slave?

All network comms are done with winsock.

Any thoughts or ideas is much appreciated.

© Stack Overflow or respective owner

Related posts about c++

Related posts about networking