Summary
Moxie has two different types of synchronization:
- video synchronization
- playlist synchronization
These can be used to synchronize the playback of content across multiple Moxie Players. When using these features, consideration must be given to network topology and host firewall configuration.
Synchronization is an advanced feature and is not appropriate on all implementations. However, it is important to know how to support this feature in case your users take advantage of it. Synced video files are typically a few seconds, to several minutes long and are often contained in a playlist.
Scope
This document discusses, in general terms, the behavior of the Moxie Player software when the video or playlist synchronization features are in use, and specifically discusses:
- video synchronization from a network perspective
- playlist synchronization from a network perspective
- network topology and firewall requirements
- troubleshooting video synchronization and playlist synchronization
Video synchronization
Using Moxie’s video synchronization (video sync) feature enables the display of a single video image across multiple screens, where each screen is driven by a separate Moxie Player application. This type of solution is often referred to as a Video Wall.
Moxie video sync can also be used to play the same video on multiple displays placed in different locations within the same area. Using Moxie Studio, the user selects one or more Moxie Players to act as parent(s) and one or more Players to act as child players. The players share video frame information as they progress through a media file.
The following description assumes that:
- one player has been configured as a parent and two players have been configured as child players
- all videos are using a Sync ID of 33
From the perspective of the network, video sync works as follows:
- When the parent player starts, it communicates with the Data Server via TCP to obtain its content assignment and configuration. Once the Data Server tells the player that it is going to act as a parent player, it opens a listening port (by default, UDP 9001).
-
When the child player starts, it communicates with the Data Server via TCP to obtain its content assignment and configuration:
-
The Data Server tells the player that it is going to act as a child player and provides the address of the parent player. The child player requests updates from its parent player using UDP packets sent from an ephemeral port2 to the parent player’s listening port.
Note: Sync packets do not travel through the Data Server, they are sent on a peer-to-peer basis between players. - Each UDP packet sent by the child player contains a 22-byte hexadecimal value representing the defined Sync ID and information related to the content being synchronized.
-
When the parent player receives each of these packets, it responds with details about what frame of the currently assigned video the child player should be displaying.
The child and parent players exchange approximately four data packets per second. This means that the child player typically receives two updates per second from the parent player. The child player continues to send update request packets to the parent player even when the parent player application closes or its computer loses its network connection. In either of these circumstances, since there is no parent player to receive the update requests, child players eventually drift out of synchronization with one another until the parent player becomes able to reply to the child players’ update requests.
-
The Data Server tells the player that it is going to act as a child player and provides the address of the parent player. The child player requests updates from its parent player using UDP packets sent from an ephemeral port2 to the parent player’s listening port.
Recommendations
For best results:
- use MP4 files with a constant bit rate and Windows 10. MP4 files are supported in Windows Media Player 12 (Windows 10), Earlier versions may require loading a video codec to your player and Moxie Studio computers
- only use WMV files up to a resolution of 1920 x 1080, they do not operate at higher resolutions
- when syncing videos on Windows 8.1 or 10, ensure the audio track is completely removed,not just muted. Windows 7 is required when using videos with an audio track.
- use the exact same hardware, as well as OS image, for all synced player computers
-
ensure the cable runs from computer to display are:
- short
- good quality
- approximately the same length
Playlist synchronization
Playlist synchronization (playlist sync) is a feature that ensures multiple Moxie Players simultaneously transition between the items in their time-driven playlists.
Typically, playlist sync is a much less time-sensitive operation than video sync, so it generates less network traffic. However, if the playlist contains WMV videos not inside layouts, these are automatically synchronized using the method described in the previous section. As with video sync, a user must design the content appropriately (for example, all synchronized playlists should have the same number of items) and use Moxie Studio to define one or more players to act as parent players and one or more players to act as child players.
The following description assumes that:
- one player has been configured as a parent and one player has been configured as a child
- a WMV is being used in a playlist as a media item
From the perspective of the network, playlist sync works as follows:
- When the parent player starts, it communicates with the Data Server via TCP to obtain its content assignment and configuration. Once the Data Server tells the player that it is going to act as a parent player, it opens a listening port (by default, UDP 9001).
-
When the child player starts, it communicates with the Data Server via TCP to obtain its content assignment and configuration:
-
The Data Server tells the player that it is going to act as a child player and provides the address of the parent player. The child player requests updates from its parent player using UDP packets sent from an ephemeral port2 to the parent player’s listening port
Note: Sync packets do not travel through the Data Server, but are sent on a peer-to-peer basis between players. - The parent player responds with details about what playlist item it is currently playing. If the currently displayed content item is a WMV video file, the players exchange data packets as for the video sync scenario explained above.
- The child player responds to this packet.
-
The Data Server tells the player that it is going to act as a child player and provides the address of the parent player. The child player requests updates from its parent player using UDP packets sent from an ephemeral port2 to the parent player’s listening port
- Prior to the parent player’s current playlist item’s completion, it sends a notification to the child player. This process then repeats for each item in the playlist.
Network topology and firewall requirements
Moxie Players use UDP packets to communicate synchronization information. There are some specific requirements from a networking perspective:
- Parent player applications must be running with credentials that have permission to open a UDP listening port. By default, this port is 9001.
- All synchronized Players must have the ability to send and receive data across the network.
- To reduce latency and ensure connectivity, it is advisable to have all syncing Players on the same subnet/VLAN.
- Any firewall software installed on synchronized Players must allow inbound and outbound UDP traffic.
- Any firewall software installed on a parent player must allow incoming packets on UDP 9001. If the user configures a different listening port for the parent player, the corresponding configuration must be made to the firewall software.
Troubleshooting
Because of the technical nature of syncing it is prone to mis-configuration. If a user has created synchronized content that does not behave as expected, a Moxie Administrator can use the following to troubleshoot the problem:
-
Is the desired synchronization feature enabled in content?
- Video sync, ensure that the Use video sync property for media zones in the layout assigned to synchronized players is set to Yes
- Video sync, ensure that the SyncID is configured correctly
- Playlist sync, ensure the Playlist syncing property of each playlist assigned to synchronized players is set to Yes
-
Are all the players configured for syncing?
In the Player Manager module, ensure that the parent/child relationship has been properly established. See the User Guide for Player Manager for assistance. -
Is the parent player opening a listening port?
- The UDP port number used by the parent player can be configured, but its default port is UDP 9001. On the parent player machine, in the Windows command prompt, use the command netstat –anop UDP to verify that the correct UDP port is open.
-
Output should appear similar to:
Proto Local Address Foreign Address State
UDP 0.0.0.0:9001 *:*
-
Is the child player sending packets to the parent player?
This can be confirmed using a third-party tool to monitor each of the related synchronization computers. If the child player:- does not appear to be sending sync packets, try re-establishing the sync relationship in Player Manager.
- appears to be sending UDP packets and they are not arriving at the parent player, verify physical LAN connectivity and accurate network name resolution.
-
Is the computer powerful enough to support the video content playback requirements?
Videos can be resource-intensive, depending on the file size, length and resolution. If you have successive video playback (or are looping the same video), adding an image for 5-10 seconds between videos, within a playlist, enables the computer to replenish its resources. -
Are the computer names unique?
New computers often have a default name. If the parent and child player names are the same, the child player will try to sync with itself.
References
- Creating an exception in Windows Firewall: http://windows.microsoft.com/en-us/windows-vista/Open-a-port-in-Windows-Firewall
- Definition of ephemeral port: https://en.wikipedia.org/wiki/Ephemeral_port
- Definition of peer-to-peer: https://en.wikipedia.org/wiki/Peer-to-peer