Overview
NextGen Live is Brightcove's next-generation live streaming platform that offers enhanced features and capabilities.
To ensure playback reflects the channel configuration, you should pass the
livePlaybackToken with your video request.
The livePlaybackToken is required to access advanced features such as:
- Server-Side Ad Insertion (SSAI)
- DVR (Digital Video Recording) playback
- Low-latency playback
- BYO CDN (Bring Your Own Content Delivery Network)
- Custom stream configurations
SDK compatibility
NextGen Live streams are compatible with recent versions of the Brightcove Native SDKs:
Android SDK
- Recommended: Android SDK 10.4.11 or later plays NextGen Live SSAI streams through the SSAI plugin. Later releases add click-through ads and tracking beacons (10.4.12), typed errors and configurable polling (10.4.19),
adsParamsad targeting (10.4.21), Open Measurement (10.4.22), and improved ad counters and slate countdowns (10.4.24 and 10.4.30). Use the latest SDK for the complete set. - Basic playback: Android SDK 10.2.4 or later supports NextGen Live stream playback without SSAI features.
- Backward compatibility: Older Android SDK versions can also work with NextGen Live using the legacy
ad_config_idparameter where we would uselivePlaybackTokeninstead.
iOS SDK
- Recommended: iOS SDK 7.2.18 or later plays NextGen Live SSAI streams through the SSAI session provider, including ad targeting and Open Measurement on iOS. Later releases improve tracking beacons (7.2.19), ad counters and slate-only break countdowns (7.2.23). Use the latest SDK for these fixes.
- Backward compatibility: Older iOS SDK versions play NextGen Live streams without ad features. The legacy Playback API query key is
ad_config_id, exposed byBCOVPlaybackService.ParamaterKeyAdConfigIdin the current SDK.
Steps
To play a NextGen Live stream with the Native SDKs, follow these steps:
Create a NextGen Live event
To create a NextGen Live event using the Live module in Video Cloud Studio, follow these steps:
- Log in to Video Cloud Studio.
- In the primary navigation, click Live.
- Click New Channel and choose an event or linear channel.
- Click Next, enter your channel name and configure the renditions, region and input settings. Click Next to open Advanced Settings.
-
Configure any advanced features you need for your stream:
- SSAI: In Advanced Settings, expand SSAI, enable SSAI and select a slate asset
- DVR: Configure DVR settings if you want viewers to be able to seek backwards in the live stream
- Low-latency: Enable low-latency streaming if required
- When you are finished configuring your NextGen Live event, click Create Channel.
Get the live playback token
The live playback token is a required parameter for playing NextGen Live streams with advanced features. You can obtain this token from the player embed code in the Live module.
To get the live playback token, follow these steps:
- In Video Cloud Studio, return to the Live module.
- Open the channel Control Room and select Embed on Web.
-
Choose a player and configure the embed sizing and code type. The generated playback token reflects the channel configuration.
-
Copy the embed code to your clipboard.
Embed code -
From the embed code, copy the
videoIdparameter value. You will use this value in a later step. It should look similar to this:6379789752112 -
From the embed code, copy the
livePlaybackTokenparameter value. This is your live playback token. It should look similar to this:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJtbiI6InBsYXlsaXN0Iiwic3NhaSI6dHJ1ZSwiYWNpZCI6IjRmMWFjYWQyLTE2MDMtNDg1Ni1hZmFjLThhYWM3NjM1YzEyYyIsImlzcyI6ImJsaXZlLXBsYXliYWNrLW1hbmFnZW1lbnQtYXBpIiwic3ViIjoicGxheWJhY2t0b2tlbiIsImF1ZCI6WyI2NDE1NTE4NjI3MDAxIl0sImp0aSI6IjYzNzk3ODk3NTIxMTIifQ.zdWC1VA5nm3CKNqNclYYNi6aSL3FbjbeHHmb5oHoziQ - You will also need the Account Id and Policy Key for your account.
Android implementation
To play a NextGen Live stream with the Android SDK, you'll pass the live playback token with your video request.
Using the livePlaybackToken parameter (Recommended)
When integrating NextGen Live, use the livePlaybackToken parameter for better compatibility and future-proofing:
- Use the Basic SSAI Sample App as a starting point. Keep its
SSAIComponentinitialization and pass the retrieved video toprocessVideo. - In the res/values/strings.xml file, replace the following with your own values:
- Account Id
- Policy Key
- Video Id (from the Get the live playback token section above)
-
In your activity file (e.g., MainActivity.java), define the live playback token value:
private final String LIVE_PLAYBACK_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJtbiI6InBsYXlsaXN0Iiwic3NhaSI6dHJ1ZSwiYWNpZCI6IjRmMWFjYWQyLTE2MDMtNDg1Ni1hZmFjLThhYWM3NjM1YzEyYyIsImlzcyI6ImJsaXZlLXBsYXliYWNrLW1hbmFnZW1lbnQtYXBpIiwic3ViIjoicGxheWJhY2t0b2tlbiIsImF1ZCI6WyI2NDE1NTE4NjI3MDAxIl0sImp0aSI6IjYzNzk3ODk3NTIxMTIifQ.zdWC1VA5nm3CKNqNclYYNi6aSL3FbjbeHHmb5oHoziQ"; -
Add the
livePlaybackTokento the HTTP request as a query parameter:HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder() .addQueryParameter("livePlaybackToken", LIVE_PLAYBACK_TOKEN) .build(); -
Make the catalog call to the Playback API with your live stream video id and the updated HTTP request:
catalog.findVideoByID(getString(R.string.video_id), httpRequestConfig, new VideoListener() { @Override public void onVideo(Video video) { plugin.processVideo(video); } }); - Your app is ready to play the NextGen Live stream.
Using the ad_config_id query parameter (Backward Compatibility)
For backward compatibility with older SDK versions, use HttpRequestConfig.KEY_AD_CONFIG_ID. This sends the Playback API query parameter ad_config_id, not the embed option name adConfigId:
HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder()
.addQueryParameter(HttpRequestConfig.KEY_AD_CONFIG_ID, LIVE_PLAYBACK_TOKEN)
.build();
iOS implementation
To play a NextGen Live stream with the iOS SDK, you'll pass the live playback token with your video request.
Using the livePlaybackToken parameter (Recommended)
For recent versions of the iOS SDK, use the livePlaybackToken parameter:
- Use the Basic SSAI Sample App as a starting point for your code.
- Keep the sample's SSAI session provider and playback controller setup. In the ViewController.swift file, replace the following with your own values:
- Account Id
- Policy Key
- Video Id (from the Get the live playback token section above)
-
In the ViewController.swift file, define the live playback token:
let LivePlaybackToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJtbiI6InBsYXlsaXN0Iiwic3NhaSI6dHJ1ZSwiYWNpZCI6IjRmMWFjYWQyLTE2MDMtNDg1Ni1hZmFjLThhYWM3NjM1YzEyYyIsImlzcyI6ImJsaXZlLXBsYXliYWNrLW1hbmFnZW1lbnQtYXBpIiwic3ViIjoicGxheWJhY2t0b2tlbiIsImF1ZCI6WyI2NDE1NTE4NjI3MDAxIl0sImp0aSI6IjYzNzk3ODk3NTIxMTIifQ.zdWC1VA5nm3CKNqNclYYNi6aSL3FbjbeHHmb5oHoziQ"; -
Add the live playback token to the HTTP request as a query parameter. Recent SDK versions provide a constant for the parameter name:
let queryParameters = [BCOVPlaybackService.ParameterKeyLivePlaybackToken: LivePlaybackToken] -
Make the catalog call to the Playback API with your live stream video id and the updated HTTP request:
let configuration = [BCOVPlaybackService.ConfigurationKeyAssetID: videoID] playbackService.findVideo(withConfiguration: configuration, queryParameters: queryParameters) { [weak self] (video: BCOVVideo?, jsonResponse: Any?, error: Error?) -> Void in guard let _video = video else { print("ViewController Debug - Error retrieving video: \(error?.localizedDescription ?? "unknown error")") return } self?.playbackController?.setVideos([_video]) } - Your app is ready to play the NextGen Live stream.
Using the ad_config_id query parameter (Backward Compatibility)
The current SDK exposes the legacy ad_config_id query key through BCOVPlaybackService.ParamaterKeyAdConfigId. The spelling Paramater is part of the SDK API:
let queryParameters = [BCOVPlaybackService.ParamaterKeyAdConfigId: LivePlaybackToken]
Migration from Live 1.0 to NextGen Live
When migrating from Live 1.0 to NextGen Live, consider the following:
Minimal code changes required
- The implementation pattern remains the same as Live 1.0
- You continue to pass the playback token as a query parameter
- The token value is obtained from the same location (Live module embed code or API)
- For backward compatibility, the legacy ad configuration parameter continues to work:
adConfigIdin the embed code, sent to the Playback API asad_config_idon Android andBCOVPlaybackService.ParamaterKeyAdConfigIdon iOS
Recommended updates
- Android: Update to SDK version 10.4.11 or later for NextGen Live SSAI, and to the latest release for current ad UI, targeting and tracking behavior
- iOS: Update to SDK version 7.2.18 or later for NextGen Live SSAI, and to the latest release for current ad UI and tracking behavior
- Update your code to use
livePlaybackTokeninstead of the legacyad_config_idquery key for clarity
Testing
Before deploying to production, test your app with NextGen Live streams to ensure:
- Basic playback works correctly
- DRM-protected streams play properly (if using DRM)
- Captions display correctly (if using captions)
- Any advanced features (DVR, SSAI, etc.) function as expected