BrightSign Video Sync Scripts

Yes, you can program BrightSign media players without BrightAuthor software. These scripts make synchronized looping shows easy on Windows, Mac or Linux!

Background

My old MultiScreener software plays Quicktime movies on Mac computers, using ethernet to keep any number of computers playing in sync. It works great (and has been used around the world by artists, galleries and museums) but computers are expensive, complicated,  and inherently unreliable.

Inexpensive media players (like the WD TV series, Micca Speck, etc) are often used for looping presentations because they play most HD formats and have no fans or discs to wear out. But they can’t do multi-screen synchronization.

BrightSign makes industrial media players that support multi-screen sync and complex interactivity. They are perfect in many ways: No annoying user-interface, cheaper and more reliable than a computer. They come to life as soon as you apply power, etc. But there are some major pitfalls too …

Trouble in Paradise

For each presentation, the players need to be configured so they know what to do with your media. BrightSign provides the (Windows Only) BrightAuthor software for this. There is no Mac version. (No longer true: BrightAuthor:Connected runs on Mac.) BrightAuthor is great for authoring complex presentations with playlists, interactivity & web data feeds, but it’s total overkill for multichannel synchronized playback.

Furthermore, BrightAuthor exports your video file in an obfuscated format on the player’s SD card. You can’t re-use previously-authored SD cards by swapping video files. You really need to start a new BrightAuthor project for every show.

BrightAuthor gets updated constantly. Most updates require a firmware update on the players and new projects are not backwards-compatible. New players ship with outdated firmware, so your current shows won’t run on a brand-new player until you update the firmware. If you update a presentation in the future you need to re-author your project, export a new SD card, and probably update the firmware too. This situation is pretty terrible for galleries, museums, or artists.

The Script Solution

The key to using a BrightSign with a Mac is scripting: For each project, BrightAuthor exports a file called “autorun.brs” in the BrightScript scripting language. When the player is powered-up it looks for this file and follows whatever instructions it finds. (This is no secret: BrightSign recommends that Mac users write scripts.) BrightScript is well-documented, including example scripts. Those examples don’t include network sync, but this old forum post does. I modified the code a bit and added comments to make it easier for inexperienced users.

  • The “Master” script tells the player to preload the specified video file, send a sync message over Ethernet to all clients, and start playing. When the video ends the player loops and sends another sync message.
  • The “Client” script tells the player to preload the specified video file and wait for the sync message, then play the video.

NOTE: These scripts do not “genlock” players for 100% frame-accurate sync. Once the videos start they can drift out of sync slightly until the next loop. (In my tests I had a maximum of 1 or 2 frames of drift after 90 minutes.) You can do genlock sync with BrightAuthor’s “BrightWall” option instead.

Download Latest Scripts (version 2019-04-05)
Changes in this version:

  • (I made this version in April 2019 but forgot to upload it until February 2020. Oops!)
  • Videos are no longer stretched to fill the display. They will be centered and scaled proportionally to fit, with letterbox (or pillarbox) bars added if necessary. Other scale modes are available, see detailed info below.
Did these scripts help you? Donations are appreciated. (sorry, not tax-deductible)

You Will Need:

  • The scripts from the download link above.
  • A BrightSign player and an SD card for each video channel. (I’ve used SanDisk Extreme Pro class 10 cards.)
  • A display and appropriate cable for each video channel.
  • A properly encoded video file for each channel. Here’s a complete list of supported formats. (I have synced many H.264 encoded MOV and MP4 files with success.)
  • For 2 channel sync, you need 1 Ethernet cable. (It will connect directly between the 2 players.)
  • For 3 or more channels you need 1 Ethernet cable per player and 1 Ethernet switch.
    (Each player will connect to the switch)

Format Your SD Cards

It’s a good idea to reformat your SD cards before use. On the Mac you can use Disk Utility’s “Erase” function. (More info about formatting your cards here.)

  • If your video is less than 4GB: use FAT32 format. (This is the easiest and most compatible option for most people.)
  • If your video is larger than 4GB and you have a “Series 3” or later player (XTx43, XDx33, HDx23, LS423) then format your card as ExFat. (requires firmware versions 6.2.94 or later)
  • If your video is larger than 4GB and you have an older player:
    Mac users should use “Mac OS Extended”. (This requires BrightSign firmware from late 2013 or newer.)
    • Windows users should use NTFS.
    • Linux users should use EXT3 or EXT4

SD Card Setup & Wiring

  1. Download and unzip my scripts. You will see a Master folder and several numbered Client folders. Each folder contains a script called “autorun.brs”. Although the filenames are identical, each script is different.
  2. Physically label your SD cards. (One “Master” and as many numbered “Clients” as you need.)
  3. Copy the appropriate video file onto the root of the SD card for each player.
  4. For the first player, drag the “autorun.brs” file from the “Master” folder onto the root of the SD card.
  5. For the second player, drag the “autorun.brs” file from the “Client 1” folder onto the root of the SD card.
  6. Continue for each player, using subsequent client numbers for each one. (I provide enough scripts to do 6 channels of video. If you need more, edit the script using the info below. There is no limit to the number of channels.)
  7. Connect the ethernet cables as explained in the “You Will Need” section above.
  8. Make sure all displays are plugged in and turned on.
  9. Turn on the BrightSigns and they should begin playing and looping in sync within a minute. (The first startup sometimes takes awhile. Be patient!)

Troubleshooting & Tips:

I’ve tested this setup thoroughly, and many people use these scripts in museums, galleries, trade shows, etc. Read everything carefully, there’s a lot of info here.

  • The Master player sends a start signal to all the Client players each time the video loops. If you shut down a player and re-start it during playback, it won’t resume until the next loop.
  • Many problems are due to errors in script editing. You probably don’t need to edit the scripts! If you do, read my notes in the “Editing The Script” section.
  • If your video plays until a certain moment and then hangs, you probably encoded it with a bitrate that’s too high for the player to handle. (25mb/s is the max for HD files. See the complete specs from BrightSign.)
  • For maximum sharpness, render your video to match the display resolution. By default, your video will be scaled to fit the display, with letterbox/pillarbox bars added if necessary. The player’s up-scaling algorithm looks great, but the down-scaling algorithm is pretty jaggy.
  • If you are forcing a VideoMode, make sure your display supports the selected mode. (Example: some HDMI displays prefer 59.94Hz instead of 60Hz. Many are unable to do 24Hz at all.)
  • I have seen several SD cards suddenly fail after a few months of flawless playback. It’s due to “read fatigue” as memory cells wear out when accessed repeatedly. For short videos I recommend rendering several loops into a longer video file, so the wear is spread out across more of the SD card’s memory.
  • Look at the blinking LEDs on the player to help diagnose any problems.
  • Do a factory reset to clear out any hidden settings in the player’s registry
  • SD card formatting can be trickier than you think: Your player might be configured to write log files to the SD card by default. Certain disk formats are mounted read-only (Windows NTFS, Mac OS Extended) so the player will hang at the setup screen instead of loading your script. In that case it may be best to temporarily reformat your card as FAT32, confirm that the master script runs (with a <4GB test video) and then reformat the card to your preferred format and try again.

If you have a general problem please see BrightSign support. If you found a problem with these scripts or you have an improvement to contribute, feel free to get in touch via my Contact page.

Editing The Script:

You probably don’t need to edit the scripts, so you can ignore this section. Warning: Apple’s TextEdit app will break your scripts! It will second-guess your motives and make subtle substitutions that corrupt the code. Use BBEdit instead. (Install the trial version. If you don’t buy a license it will eventually revert to a free mode with fewer features, but that works fine for us.)

You can edit these lines at the top of each script. Do not edit anything else later in the script file!

videoFile = “myFile.mp4”
The filename of your video, in quotes.

VideoMode = “1024x768x75p”
The output resolution and refresh rate of your display, in quotes.
(There is a basic list of available options in the script file.) Here is the complete list from BrightSign.

ScaleMode = 1
How should the video be scaled if it doesn’t match the screen? … Insert a number from list below, NOT in quotes
0 = “Scale To Fit” Scales the video to fill the window in both dimensions. The aspect ratio of the video is ignored, so the video may be stretched/squashed.
1 = “Letterboxed And Centered” (recommended) Scales the video to fill the window in the longest dimension, adding letterbox/pillarbox if required to maintain video aspect ratio.
2 = “Fill Screen And Centered” Scales the video to fill the window in the shortest dimension. The aspect ratio is maintained, so the long dimension may be cropped.
3 = “Centered” Centers the window with no scaling.

audioVolume = 15
The volume of the audio output, in percent. These players have LOUD outputs so try 10-20 for sane headphone levels.

Each client script has one additional variable:

ClientIP = “192.168.1.11”
The IP address of this client, in quotes. Each client player needs a unique suffix, but all players must have the same first 3 numbers.

example:

  • master = “192.168.1.10”
  • client 1 = “192.168.1.11”
  • client 2 = “192.168.1.12”
  • client 3 = “192.168.1.13” … and so on …

Audio Formats and Multichannel Surround Sound:

  • Some players (LS423) lack a headphone jack, but the USB-C jack passes through analog audio if you use an adapter (available in the Accessories section of the BrightSign online store). No scripting changes are required but the adapter must be present at startup. Plugging it in later won’t work!
  • AAC mono or stereo is fine, at 44.1 or 48kHz sampling rates. (It will be decoded by the BrightSign and passed over HDMI as uncompressed PCM, while also coming out of the BrightSign’s headphone jack.
  • AAC format surround is not supported.
  • AC3 format surround is passed-through to the HDMI output, to be decoded by a compatible receiver. The BrightSign won’t decode the AC3 to PCM over HDMI and nothing will come out of the headphone jack.
    AC3 Details:
    • Encode your video as H264 (MOV or MP4 containers work fine)
    • Encode your 5.1 audio to a Dolby digital AC3 file (just like for DVD authoring in the days of old)
    • Use tsMuxeR to mux them together into an MPEG transport stream (.TS file)
    • The TS file will play on the BrightSign, passing the Dolby Digital audio over HDMI.
    – (This forum post indicates that MP4 and MOV containers should work too, but I could only make it work with TS containers.)
    – If you want to play your TS file on a Mac you need to install the A52 AC3 codec from the Subler project. (Works great in QTX but doesn’t help with QT7.)
  • Audio will not be embedded in the HDMI output if the script is set to a resolution that isn’t traditionally used for video. (like 800×600 or 1024×768)

Black Level:

  • At HD and computer resolutions, the HDMI output seems to use the full brightness range of the display
  • At 720×480 resolution (aka standard def.) blacks are lifted. It looks like the traditional 7.5 IRE “pedestal” from the days of old. (There is no pedestal at 640×480 though.)

Analog Video Output

Older players with VGA ports can display NTSC/PAL component/S-Video/composite via a passive VGA adapter. This signal is great for driving CRT monitors with full interlacing. Just choose a VideoMode like “ntsc-m”. BrightSign provides details here.

Previous Versions:

2019-03-18

  • New drag & drop setup. No script editing required!
    (Pre-edited scripts are provided for master and 5 clients)
  • Each script now auto-detects the video filename and output resolution (manual override available via script editing).

2015-02-05

  • Manual setup (You must edit each script before use!)
  • Tested with the recently released HD222 players
  • Simplified the instructions included in the script (No changes to the script code itself)

2014-04-11

  • Manual setup (You must edit each script before use!)
  • Fixed typo in example video mode (There was an extra p in “75p”)
  • Renamed the download to avoid confusion with the “BrightSign Network” which is BrightSign’s subscription based service for content updates.

2013-11-15

  • Manual setup (You must edit each script before use!)
  • Initial release