I’m having trouble synchronizing five Media Players. I have five video screens in my scene, each playing a different video. I need all five videos to start playing at the same time, because some parts of the videos are synchronized with each other.
I’m currently using a Sequence node to call Open Source on each Media Player (see attached Blueprint). However, the videos start playing sequentially, with a slight delay between each screen.
What’s the best way to make all five videos start at exactly the same time?
I need to keep the videos separate, as each screen also has its own audio track.
The delay comes from OpenSource being asynchronous and each player buffering at its own pace, so a Sequence node can’t give you a simultaneous start even though the calls happen in the same frame.
A more reliable approach is a two-phase start:
Open all five sources first (Open Source, or Open Playlist), and make sure “Play On Open” is turned off in each Media Player asset.
Bind to each player’s OnMediaOpened event and increment a counter (or set a boolean per player). When the counter reaches 5, all players are prepared.
Only then call Play on all five in the same function/Sequence. Since they’re already opened and buffered, the start offset should be a frame or less.
If you still see drift, call Seek to the same time (e.g. 0.0) on all of them right before Play, and for sections that must stay locked, consider a periodic check: compare Get Time on each player against a master player and Seek the others if the difference is over ~0.05 s. Also use the same codec/framerate for all clips (hardware-decoded H.264 starts at different latencies than other formats), and consider the Electra player if WMF is giving uneven start times.
If sync really has to be frame accurate, putting the videos in one wide video and splitting it with UVs across the five screens is the bulletproof option, though you lose separate audio tracks.