Skip to main content
Configuring your BrightSign for Portrait display

This guide details how to configure your BrightSign device for portrait display and the best practices for achieving optimum performance.

Joe Turone avatar
Written by Joe Turone
Updated over 5 months ago

Changing your BrightSign's orientation to Portrait

There are two ways you can achieve this:

  • While manually installing Signagelive on your BrightSign device, you'll need to create a settings.json file from our BrightSign Config Generator. Here, you have the option of selecting Portrait or Portrait (270) from the Screen Rotation drop-down menu.

  • If Signagelive is already installed on your BrightSign device in landscape, you can plug a USB keyboard into your BrightSign device and press CTRL + S. This will allow you to set the rotation from the device itself, as per above.


General Video Guidelines

  • The video frame rate should match (or be a multiple of) the native frame rate of the display

  • Video upscaling/downscaling should be avoided, as this will affect performance (even if not noticeable)

  • Avoid video modes that are interlaced

  • Avoid video modes that result in over-scanning

  • Use optimal bit rates

Optimising Video Quality

Due to the added workload on the CPU and memory bandwidth that portrait configuration places on BrightSign devices, we recommend considering the specific prerequisites detailed below to ensure optimum video performance. This information is closely based on BrightSign's own guidance.

Recommended Encoding for Portrait Video Content (FFMPEG)

Portrait content should be encoded using FFMPEG. This applies to all videos displayed in portrait mode, including videos within Widgets/Apps.

The format of this command is as follows:

ffmpeg -i <existing-video-file> -c:v libx264 -x264-params b_pyramid=0 <new-video-file>

Unpacking the command above, this means:

  • -i is used to allow you to provide the existing video (input) file you want to convert

  • -c:v also known as codec:v or vcodec - this sets the video codec to be used, in this case it would be libx264

  • -x264-params overrides the default preset that ffmpeg uses, and additionally passes in an override for b_pyramid by setting it to 0

An example of the above command might be:

ffmpeg -i pre-existing-video-file.mp4 -c:v libx264 -x264-params b_pyramid=0 new-encoded-video-file.mp4

This converts the available video file into a brand new file that can then be used on your BrightSign Player.


Performance Considerations

  • Tickers, HTML, graphics, and large image files may affect performance.

  • Frequent updates and network traffic can impact the operation of the device.

When preparing your content, consider the amount and variety of content you are putting on your screen. If you are experiencing glitches in your playback, certain elements may need to be removed.

Performance guidelines by Player type

Portrait video on BrightSign Players

XC5

  • The XC5 can output portrait video at 4K and at HD (1080x1920 at 60p). The XC4055 can play videos in landscape mode at resolutions up to 8K at 60fps (H.265), and the XC2055 can play videos in landscape mode at resolutions up to 8K at 30fps (H.265).

  • Both players can support playback of videos at very high bitrates (up to 400 Mbs depending on the encoding parameters).

XD5, LS5, HS5, and HD5

  • These players can output portrait HD video (1080x1920 at 60p).

XT4, XT3, XD4, XD3

  • Can output portrait video at 1080x1920x60p

  • If multi video, total video resolution cannot exceed 1080x1920

  • Device output resolution must be 1080x1920 - “auto” mode cannot be used if attached to a 4k screen.

HD4, HD3

  • Can output a single portrait video at 1080x1920.

  • Device output framerate up to 60 fps

  • Source video must not exceed 30 fps

LS4

  • Can output a single portrait video at 1080x1920.

  • Device output framerate up to 60 fps

  • Video must be encoded as HEVC/H.265 and must not exceed 30fps

  • Hierarchical b-frames (B-pyramid) cannot be used and must be disabled when encoding.

  • Avoid if at all possible! Pre-rotated content is more reliable.

LS3

  • Can output a single portrait video at 1080x1920.

  • Device output framerate up to 50 fps

  • Video must not exceed 30fps


Known Limitations with Portrait Video on BrightSign devices

  • Portrait video is not supported with interlaced video output modes.

  • Maximum bitrate support for video content is 50Mbps for the LS and HD models. The recommended CBR (constant bit rate) for these models is 25Mbps

  • BrightSign XD and XT models support bitrates of up to 95Mbps. The recommended CBR (constant bit rate) for these models is 30Mbps to 40Mbps.

If videos are not encoded correctly or if multiple videos are used on a player type where this is not supported then visual video glitching/tearing may occur on the videos trying to play.

Widget SDK (for Developers)

Avoid using the video playlist approach in the Widget SDK as issues may be observed on Series 3 / 4 players. Instead you should follow video encoding guidelines and make use of other video features such as the use of the poster attribute. For video playback in widgets you should also use the HWZ attribute, and set the z-index to -1.

// Video rotated 90 degrees and behind graphics layer.
<video src="example_movie.mp4" hwz="z-index:-1; transform:rot90;" autoplay loop>

To rotate video content, you will need to apply a transform option on Series 3/4 players running in Portrait. This is not required for Series 5 devices. To determine whether a player is running in Portrait mode, you can use the Widget SDK method getDisplayProperties() and check the rotation value in the response.

Signagelive.getDisplayProperties()
.then(function (displayProperties) {
console.log(displayProperties.rotation); // 0, 90, 180, 270
})
.catch(function (error) {
console.error("Unable to get rotation details: " + error.message);
});

Additionally, in a future update, we will allow you to determine dynamically whether a Series 3, 4 or 5 player is being used through the getPlayerDetails() Widget SDK method.

Signagelive.getPlayerProperties()
.then(function (playerProperties) {
console.log(displayProperties.deviceSeries); // 3, 4, 5
})
.catch(function (error) {
console.error("Unable to get player details: " + error.message);
});

More information on making use of Widget SDK options can be found on our Build Site.

Did this answer your question?