Receiving and Decoding an SRT Stream using BrightSign

BrightSign hardware is able to play out SRT streams but it requires a custom firmware.

Download the relevant firmware file for your BrightSign from here.

To update the firmware, format an SD card to erase all its content and copy the firmware package onto it. Load the SD card into the BrightSign and power it up. If you have a screen connected you will see a purple and gold progress bar indicating that firmware is updating. Once it is complete the unit will restart.

Creating a Presentation

Once the firmware is updated you can create a BrightAuthor presentation which will play the SRT stream. Add a Live Stream element to the presentation and when requested enter the stream URL in the format
srt://stream-ip:port-number

This puts the BrightSign into caller mode so it will be trying to contact an encoder which is listening for a connection.

Handling Stream Failures

BrightSign treats the SRT stream failing as a media end event, meaning you can automatically transition to a holding slide or backup content. In the example below a loss will trigger a transition to an image file and every 5 seconds the BrightSign will try to go back to the stream. If the stream still isn’t available the player just fails back to the image file.

The example presentation is available here.

Other Settings

Further settings can be changed using the URL switches below. These are used by adding them to the stream URL using the ? and & switch notations. For example:
srt://192.168.0.6:5000?maxbw=2500&srtlatency=500

This example will the BrightSign will call the encoder at 192.168.0.6 on port 5000 setting its maximum receive bandwidth to 2.5Mbps and and SRT latency of 500ms.

special:modemode:{“caller”, “listener”, “rendezvous”}The application uses srt_connect (if caller) or srt_listen+srt_accept (if listener), or both sides use srt_conect and SRTO_RENDEZVOUS flag (if rendezvous).
special:localaddresslocaladdress:{STRING}sets the IP address of a local network device to bind() before listening or connecting (default uses 0.0.0.0)
SRTO_MAXBWmaxbw:{INT, -1…}Maximum bandwidth (in b/s)
SRTO_PBKEYLENkey*:{“0″,”128″,”192”, “256”}Passphrase key length (16, 24, 32), mandatory for initiator side
SRTO_PASSPHRASEpass*:{STRING}Passphrase string (10-80 characters)
SRTO_MSSmss:{INT, -1…}Default 1500 which is size of the unit. By decreasing it you decrease the maximum payload size. Recommended not to mess with this in Live mode (default).
SRTO_SNDBUFsrt-send:{INT, 0…}Size of sender buffer in bytes, aligned to the multiplicity of UDP payload size resulting from SRTO_MSS setting.
SRTO_RCVBUFsrt-recv:{INT, 0…}Size of receiver buffer in bytes, aligned to the multiplicity of UDP payload size resulting from SRTO_MSS setting.
SRTO_IPTTLipttl:{INT, -1…255}Maps to IP_TTL (level IPPROTO_IP) socket option
SRTO_IPTOSiptos:{INT, -1…255}Maps to IP_TOS (level IPPROTO_IP) socket option
SRTO_INPUTBWinput-rate:{INT. -1…}Maximum BW with possible overhead
SRTO_OHEADBWoverhead:{INT, 5…100}Overhead BW (used only if INPUTBW is used and MAXBW == 0)
SRTO_TSBPDDELAYlatency, srtlatency:{INT, 0…}SRTO_TSBPDDELAY == SRTO_LATENCY
SRTO_TLPKTDROPtoo-late:{INT, -1…1}Whether to drop lost packets in order not to delay a next ready packet. Default on.
SRTO_NAKREPORT Whether to send periodic NAK reports. Default on.
SRTO_CONNTIMEOconntimeo:{INT, -1…}Connection timeout.
special:portlocalport:{INT, 1…}Sets the port to given value to bind() before listening or connecting (caller mode only)
SRTO_UDP_SNDBUFudp-send:{INT, 0…}UDP_SNDBUF/UDT_SNDBUF Socket Option
SRTO_UDP_RCVBUFudp-recv:{INT, 0…}UDP_RCVBUF/UDT_RCVBUF Socket Option

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *