Brightcove Live provides a robust service for creating live streaming events or 24/7 live streams. This guide outlines best practices for optimizing your live streams
The type of content being streamed needs to be considered as it has an impact on the required settings for maintaining the quality of the input. Note that there are trade-offs and using the highest possible settings may cause issues such as skipped frames.
Based on the information below, we recommend that you test different setting combinations for quality and performance before your live event.
The key input parameters are outlined in the following table:
Parameter | Notes |
---|---|
Input bitrate | The bitrate that the encoder sends. Higher rates are more susceptible to network loss so should be kept as low as practical. |
Input resolution | This should match the source content. There is no benefit in making this greater than the original source and the higher this value is, the higher the bitrate is required to support it. |
Input bitrate to top profile ratio |
To ensure optimal performance during live events, we recommend setting the input bitrate to match the bitrate of your highest bitrate live rendition. However, exceeding the maximum rendition bitrate significantly can potentially result in buffering, high input/output drift, and other related issues. Therefore, Brightcove recommends carefully considering the following factors when determining the input bitrate:
|
Profiles | The different profiles (baseline, main, high) compress the data in ascending amounts (baseline: lowest, high: highest). Greater compression improves the rate of transmission, but also requires greater CPU resources to decode the data. Unless the encoder is highly constrained in available resources baseline profile should be avoided. On the other hand, using high profile at high bitrates is more likely to cause skipped frames due to the increased decode CPU resources required.
Also see GOP structure below. |
Frame rate | This should match the source.
Higher rates will require proportionally higher input bitrates e.g. with action sport content a 60fps input stream carries substantially more data than a 30fps stream. High rates such as 60fps are more likely to have skip frame issues on complex content at high bitrates. |
Keyframe rate | The most efficient setting for this is the segment duration x frame rate - for example, if you have 6 second segments and 30fps making the keyframe rate 180 (6x30) would result in the lowest decoder load.
However, to account for any fluctuations this is set to 2 x the frame rate - for example, 60 for a framerate of 30 fps. |
GOP structure | See GOP structure below. |
In order to ensure the highest quality, most consistent streaming experience, Brightcove Live limits input stream settings to:
rtmp
, rtp
, rtp-fec
, or srt
(all except rtmp
are for MPEG2-TS inputs)[1-1]1
AAC
If you have long-running jobs (such as linear channels), please reactivate them on a monthly basis to get the advantage of bug fixes and new features.
There are several issues that are generally encountered that relate to problems with the streaming experience from the encoder to Brightcove:
Generally, more complex content will require using the higher of these settings and as such is more susceptible to skipped frames. The table below shows some examples in order of complexity. Note that these are examples only, and as just about every encoder setup is different. Testing and verification should be performed.
Content Type | Example Settings |
---|---|
Webcam |
|
Web conference |
|
Animation |
|
Talking Head / News |
|
Live Concert |
|
Live Sport |
|
Live Sport High FPS |
|
Set the insertion of key frames so that it matches the request segmentation settings. For example, if the frame rate is 25 frames per second and the desire is for a 6 second segment then set the keyframe interval to be at least once every 300 frames.
Test the encoder settings/output with desired target devices. This is particularly important if using a broadcast contribution encoder that may have advanced settings that result in a stream that may not be compatible with all consumer devices. It is also a good idea to avoid particularly advanced settings - it is hard to say what these are exactly as there are so many possible encoders and options. But a general top rate profile should be something like:
Ideally you should start with the lowest possible settings on your most complex (most changing content) and test with their content by increasing the various settings until the output is acceptable. This is because generally the higher the settings the more likely issues are to be encountered in either the network or transcoding.
The first step towards arriving at the appropriate settings for the input stream is to determine the available bandwidth on site. There are a few tools that can help:
Providing a high-quality, stable input stream is the only way to ensure the best user experience for viewers. A good input stream provides the best video quality at the highest consistently available bandwidth from a location.
Input limit spikes
Understanding the capabilities of the software and hardware used to encode the live stream and send it to the Live module is also important. There may be plenty of bitrate to send a high-quality, 1080p input stream, but the hardware also needs to be able to encode in faster-than-realtime speeds. Some encoding tools display information about the total CPU usage and bandwidth being used. For example, Telestream Wirecast will display the output statistics at the bottom of the Wirecast window.
This information is useful when determining the most stable, highest quality stream that is possible on given hardware. Things to watch in Wirecast:
The Group of Pictures (GOP) structure of the video is dependent first on the profile that is used as:
Main and High profiles generally result in better compression at better quality but also require additional computation to encode and decode, as such may be more susceptible to skipped frames. In addition, as these profiles use B (bi-directional) frames, they induce some delay in the encoding process.
Baseline profile requires less CPU to encode and decode, but as it offers less compression, it requires a higher bitrate to maintain quality and as such is more susceptible to network issues.
The use of I frames should ideally be limited to start of segments (critical if using passthrough) or scene changes. All or high numbers of I frames should be avoided as this can cause excess load leading to skipped frames.
min_keyin
= 3+).4
for sporting / high movement content.3
for sporting / high movement.max_bitrate
= 1.1 * target_bitrate.It is important to note that the internet is not a guaranteed delivery network, and that while an internet connection may be considered "good", it may not be good enough for reliable live video streaming at high quality. A small disruption in the path between the customer encoder and the Brightcove transcoding platform such as a small amount of congestion at an ISP, an unplanned failover between routers, or similar issues can cause a disruption in the video output. In high stakes live broadcast it is normal practice to have multiple dedicated networks consisting of either dedicated fibre, booked satellite bandwidth, or committed bandwidth on a managed network. This comes with a substantial cost, and in most cases it is possible to achieve a good enough outcome over the internet. If, however, it is critical to maintain fault-free transport please consider AWS Direct Connect or an ISP that can provide some level of dedicated bandwidth.
Generally, we recommend dedicating bandwidth two times the encoder's expected stream size to completely avoid any bandwidth-related network issues.
The options we recommend are (in order):
See Supported Encoders for Live Events for list of encoders known to work with Live. Note that other encoders may also work, but have not been tested.
We recommend enabling retries for the RTMP connection from the encoder. A large number of retry attempts with a 5-second retry interval will mitigate any intermittent connectivity issues between the encoder and the entry point.
Recommended job settings
Field | Recommended Value |
---|---|
ad_audio_loudness_level |
-23 (EBU R.128 standard) |
A job must be activated before the encoder connection. Also, activating a job after starting the stream from the encoder is not a supported procedure and may cause unexpected behavior.
Ensuring that you are using the latest version of the Brightcove Player is crucial for maintaining optimal performance, security, and access to the latest features. New releases often include bug fixes, performance improvements, and new functionalities that can enhance the live streaming experience.
Below are recommended output settings, but note that for many encoders, the RTMP input is limited to 20 MBPS (video + audio) and a framerate of 30fps.
Item | Recommendation |
---|---|
Video codec | h264 is currently the only option |
Audio codec | aac is currently the only option |
Width | If no width or height is supplied, the source dimensions are used. If either width or height is supplied, the other dimension will be calculated to maintain the aspect ratio of the source. |
Height | If no width or height is supplied, the source dimensions are used. If either width or height is supplied, the other dimension will be calculated to maintain the aspect ratio of the source. |
Bitrate | The current max output bitrate supported is 20Mbps |
Keyframe rate | 2 seconds |
waiting
to finishing
:
max_waiting_time_ms
has elapsed, the job is finished/deactivated.reconnect_time
has elapsed, the job is finished/deactivated.If the event_length
is greater than 30 minutes, the job will terminate in 30 minutes. If the event_length
is less than 30 minutes, the job will terminate in event_length
.
For example, if the event_length
is 60 minutes, then, the live job will terminate in 30 minutes. If the event_length
is 15 minutes, then, the live job will terminate in 15 minutes
The reconnect_time
has no effect for waiting state.
A maximum of 5 active waiting, unstarted jobs is allowed at any time.
Additional limitations on concurrent jobs:
channel
(24x7) jobs is limited to 0 or a low number per region (depending on the account type).event
jobs is limited by region, generally to 100.event
jobs is limited to 5.Any of these limits can be adjusted on an account level by Support. Contact your Customer Success Manager if you need additional capacity.
If you need further help getting your live event to work, you can contact us. To make sure you get the fastest response possible, below is a list of what Brightcove Support will need to solve the problem.