Broadcast an event (e.g., concert, sporting event, lecture, etc.) in near real-time by leveraging a live event.
If you require a continuous live stream, consider using a live channel instead.
Set up a live event by performing the following steps:
Our live event service allows you to:
Control the audio/video feed source.
An operator controls:
Key information:
A live event's playback URL may be signed to control how and when the live event may be viewed.
Slate will be displayed under the following conditions:
Slate may also be manually inserted into the broadcast.
An alternative to the Live Slicer is the CameraSlicer. It provides a simplified streaming solution when the full functionality and flexibility provided by the Live Slicer and the Live Events Dashboard are not needed.
To prepare the Live Slicer to stream a live event
Verify that the latest version of the Live Slicer (240916.03.01) is installed.
Verify that the system time on the computer hosting the Live Slicer is accurate.
Use Network Time Protocol (NTP) to sync your Linux server's time with a public time server.
The Live Events Dashboard uses UTC time to schedule certain commands to the Live Slicer. Therefore, inaccurate system time on the computer hosting the Live Slicer may lead to synchronization issues.
Sample synchronization issues:
Define the following settings in the Live Slicer configuration file (/etc/uplynk.conf):
api_port: 127.0.0.1:65009
preview: on
livepreview_with_audio: on
livepreview_max_viewers: 2
Additional information for each of the above Live Slicer settings is provided below.
livepreview_max_viewers: Limits the number of simultaneous viewers of a live preview.
Each instance of a live preview consumes resources on the computer hosting the Live Slicer. This setting is designed to prevent performance issues by capping the number of simultaneous connections.
If a Live Slicer is not configured to support TLS, then browsers may not properly load the Live Events Dashboard due to the page containing a mixture of HTTP and HTTPS content. Some browsers display a warning icon in the address bar to indicate this issue. An operator may then choose to accept this potential security threat by configuring the browser to allow insecure content.
The Live Slicer may communicate with the Live Events Dashboard over SSL/TLS. The use of TLS secures all transferred data by encrypting it.
A TLS certificate may be automatically generated by the CMS, downloaded, and then installed on the computer hosting the Live Slicer by performing the following steps:
Perform the following updates within the Live Slicer configuration file (/etc/uplynk.conf) and then save your changes:
Set the ssl_port setting to the desired port.
Example:
Configure the Live Slicer to communicate over HTTPS by generating and installing a TLS certificate on the computer hosting it.
The recommended setup for multiple Live Slicers is to use subdomains (e.g., ls1.example.com, ls2.example.com, ls3.example.com, etc.). These subdomains may then be secured via a single wildcard SSL certificate.
Perform either of the following steps:
Generate a self-signed TLS certificate.
Self-Signed SSL Certificate: This type of setup requires configuring each browser that connects to the Live Events Dashboard to trust this TLS certificate.
Define the following settings in the Live Slicer configuration file (/etc/uplynk.conf):
Live Slicer Configuration | Description |
---|---|
ssl_port: 65010 | Define the port through which the Live Slicer will send and receive TLS traffic.
This sample configuration configures the Live Slicer to use port 65010 for TLS traffic. However, this setting may be configured to any available port. |
ssl_cert: /Path/SSLCertificate.pem | Identify the TLS certificate through which data will be encrypted by replacing the following variables:
|
manual_ip: DomainName | Defines the hostname through which TLS traffic will flow. |
Load a Live Slicer's test page.
Syntax:
Sample URL:
Typically, the computer hosting the Live Slicer should be assigned a static IP address. However, there are certain conditions (e.g., slicing at a conference behind a firewall) under which the computer hosting the Live Slicer may be assigned a dynamic IP address. A workaround for this type of setup is to use ngrok to expose a local server behind a NAT or firewall to the internet. Ngrok will generate a TLS-enabled URL for that server. After which, modify the manual_ip Live Slicer configuration setting to point to this URL.
This section explains how to set up a live event for use with a Live Slicer. Live event setup is slightly different when using the CameraSlicer.
A live event may also be created or updated via the Live Events Integration API.
A live event must be scheduled before it may be broadcasted. At its core, setting up a live event consists of:
Defining when it will start and/or end.
Starting with Live Slicer version 21071400, our service uses system time, as determined by Network Time Protocol (NTP), to identify when to perform a scheduled start or stop of your live event.
Default appropriate default live event configurations (e.g., slate, content expiration, the ability to resume a live event, etc.) from the Slate and Live Events pages located under the Settings tab.
To set up a live event
Optional. The following actions may be performed from the Details tab:
Schedule the Live Event: Assign the desired start and stop date/time through the Scheduled Start Time and the Scheduled Stop Time options.
Configure the live event to automatically run according to this schedule by setting the Auto Start/Stop option to "Yes."
Define an External ID: Assign a unique ID to the live event through the External ID option.
This external ID may be used to generate a playback URL.
Playback Latency: Select the level of latency behind live for this event:
Low: Low 20s, 5+ second buffering, Missing Content Slate (MCS) is possible
Lower: Upper teens, 2+ seconds buffering, MCS is possible
To adjust latency, you must use two-second slices and encode slates must be encoded to 2 seconds.
Playback latency options cannot currently be used with Time Shifting.
Contact Support if you do not see the Playback Latency drop-down.
From the Slicers tab, type the name of the desired Live Slicer in the Slicer ID option and then click + Add.
The specified name must be a case-sensitive match to the value defined in the slicerID setting of the Live Slicer configuration file.
For your convenience, suggested Live Slicers will be provided as you type.
The easiest way to add a Live Slicer to the suggestion list is to click Yes when adding the desired Live Slicer to a live event configuration.
Manage this suggestion list from the Live Event Slicers section of the Live Events page. The Account Slicers list displays a list of all Live Slicers that have ever sliced content to your account, while the Live Event Slicers section defines the set of Live Slicers that will be suggested when setting up a live event configuration.
Optional. From the Pod Format tab, define the ad pods that will be associated with the live event.
Click Import from CSV.
The Pod Format tab will be populated by the ad pods defined within the selected CSV file. Ad pods will be listed according to the order in which they were defined in the CSV file.
In the Duration option, specify the duration of the ad pod.
Format:
Optional. Add metadata that will be sent to the third-party ad server when the ad pod is queued up by an operator.
Optional. From the Metadata tab, define the metadata that will be associated with the live event.
Verify your CSV's format and data.
Format: The format should follow either of the following conventions:
Type | Description |
---|---|
Columns |
This format requires all key names to be defined in the first row. Example: Key1,Key2,Key3 Value1,Value2,Value3 |
Rows |
This format requires all key names to be defined in the first column. Example: Key1,Value1 Key2,Value2 Key3,Value3 |
Data: Verify that the CSV's data does not conflict with metadata that has already been associated with the live event.
Importing a CSV will overwrite metadata fields when a key with the same name is found.
Click Import from CSV.
The Metadata tab will be populated by the metadata defined within the selected CSV file. Metadata fields will be listed according to the order in which they were defined in the CSV file.
Optional. Add an additional key/value pair by repeating steps 1 - 3.
To copy a live event
If a live event selected in step 1 contains metadata, then you will be prompted to review the fields that will be added to the new live event.
Exclude metadata from the new live event by clicking the icon that appears to the right of each desired field. Click Duplicate when finished.
Clicking Close will prevent that live event from being copied.
A copy of each live event selected in step 1 will be created. Each new live event will be named Copy of Live Event.
Duplicating a live event will not generate an exact copy. Unique or live event-specific settings within the new live event will be cleared or reset to a default value. These settings are listed below.
Setting | Value |
---|---|
Assets |
Blank |
Auto Start/Stop |
No |
External ID |
Blank |
Logs |
The following two actions will be logged:
|
Playback |
The following changes will be applied to playback settings:
|
Scheduled Start Time |
Blank |
Scheduled Stop Time |
Blank |
Status Information |
The following status information will be set:
|
An ad pod defines an ad break window and associates metadata with it.
Use one of the following methods to take an ad break:
Live Event Configuration: An operator may queue up and then take an ad pod that was defined within the live event's Pod Format tab prior to the start of the live event. Additionally, once the ad pod's duration has elapsed, the live event will automatically switch back to the Slicer source.
You may configure the Live Events Dashboard to alert the operator when a live event is in ad state for a specified number of minutes. Once enabled, a warning will be displayed 15 seconds prior to the specified number of minutes. Once the specified time limit has elapsed, a critical alert will replace the warning.
Set up a default alert configuration through the Default Ad Break Warning (min) option from the Live Events page. You may also override this default setting on a per live event-basis by opening the desired live event, clicking the Config tab, and then setting the Ad Break Warning (mins) option to the desired number of minutes.
Quickly add multiple ad pods to a live event configuration by importing a CSV file. Define the following fields within that CSV file:
Field | Description |
---|---|
Name Required |
Assigns a unique name to an ad pod. |
Duration Required |
Assigns a duration to the ad pod. Specify duration in seconds or the time formats defined below.
|
KeyName |
Assigns a key/value pair to the ad pod. Key information:
|
Use a spreadsheet application (e.g., Excel or Google Sheets) to quickly create CSV files. Make sure that the first row in the spreadsheet contains the above fields.
The following sample CSV file contains two required fields (i.e., Name and Duration) and two fields that define key/value pairs (i.e., Type and Region):
Name,Duration,Type,Region Widgets,30,Informational, Conference,45,Conference,US Event 1,90,Event, Event 2,120,Event, Event 3,150,Event,
Importing this sample CSV file will add the following ad pods to the live event configuration:
Notice that only the Conference ad pod contains two key/value pairs. The other ad pods were only assigned a single key/value pair, since the second key/value field (i.e., Region) was not assigned a value for those ad pods.
A live event may be created, viewed, and operated by either the owner of the account or any authorized user. Authorization may be granted to other users via the following permissions:
Permission | Description |
---|---|
Read |
Allows a user to view detailed information for each live event associated with your account. Either the Write or the Assigned permission is required to operate a live event. |
Write |
Allows a user to modify and operate any live event associated with your account. |
Assigned |
Identifies a user as a potential operator for the live events associated with your account. In addition to this permission, authorization must be granted to this user on a per live event basis. After which, the user will be allowed to operate authorized live events via the Live Events Dashboard. |
Permissions may be defined on a per user basis from the Account Access page. Navigate to this page by clicking the Settings tab and then clicking Account Access Settings from the side navigation tab.
To authorize a user as an operator
Grant the Assigned permission to the desired user from the Account Access Settings page.
If the operator requires the capability to view or make changes to a live event prior to its start, then grant the Read and Write permissions as well.
Users that have been granted the Write permission may operate any live event and therefore do not require authorization on a per live event basis. Skip the following two steps for this type of user.
A live event may generate the following type of content:
CMS Asset: An asset that replicates the viewing experience of the live event will be added to the CMS library upon its completion. Live events whose duration is longer than 8 hours will be split into multiple assets.
Define a default and/or a live event-specific retention period for the above assets.
Account-Level Settings: A default content expiration policy may be defined from the Live Events page. Define the desired content expiration policy through the settings in the Content Expiration section. These settings determine whether the CMS asset and the temporary assets generated from the live event will be automatically deleted once the specified number of hours have elapsed from the completion of the live event.
A minimum content expiration policy of 150% of the duration of the live event is automatically applied to the temporary assets generated for all live events.
Live Event Configuration: Override the default expiration policy for the CMS asset generated for a live event through the VOD Auto Expire Hours option.
Valid values are:
Mark key events within your live event via markers. A marker is a custom tag that can be applied to a specific moment within your live event. Marking an event adds it to:
Live Events: Adds a log entry. View your live event's log data via the EVENT DETAILS tab of the Live Events Dashboard and the Logs tab of your live event configuration.
Log event syntax:
Live Event Status Reporting: Triggers an event whose event property uses the following syntax:
Each marked event logs the type of marker, the name of the marker, and the specific moment at which the live event was marked.
Setting up markers requires:
Assigning the desired marker template to your live event.
Assign a template by loading the desired live event configuration, verifying that the Details tab is active, and then selecting the desired template from the Marker Template option.
Once you have performed both of the above steps, your live event operator can mark key events using the set of markers corresponding to the marker template assigned to the live event.
To create a marker template
Add a marker category by performing the following steps:
Add a marker to the template by performing the following steps:
To mark key events within a live event
From the Markers section, select the desired marker by performing the following steps:
From the Tag option, select the desired marker.
If the desired marker is not listed, then you may type the name of the desired marker and then press ENTER. After which, it will be added to the list of available markers for the duration of your Live Event Dashboard session. Follow the instructions from the To create a marker template procedure to permanently add this marker for future live events.
Slate may either be:
Automatically Inserted: Slate will be automatically triggered under the following conditions:
Missing Content Slate: During a live event when both of the following conditions are true:
Define default pre-event, post-event, ad, and missing content slate from the Slate page. You may override this default configuration when setting up your live event. Additionally, a live event's pre-event slate may also be manually set from the Live Events Dashboard prior to the start of the live event.
Manually Inserted: The Live Events Dashboard allows slate content to be manually inserted during a live event by selecting the desired asset from within the Live Events Dashboard's Switcher pane.
Key information:
If you enable the VOD Replayable option on your live event, then our service will generate an asset through which your live event can be replayed as on-demand content. Each time that you insert slate into your live event, you must choose whether that asset will contain the slate content being inserted.
Include: Include slate within the VOD asset generated by your live event by performing the following steps:
Open the configuration for the desired live event and set the Enable Slate in VOD Replay option to Yes.
You cannot set the Enable Slate in VOD Replay option to Yes when a live event has been configured to use slate from a CMS library that has been shared with your account.
From the Live Events Dashboard, find the desired asset under the Mid Event Slate section and then click on Save to Replay.
Use the Save to Replay option to include the entire mid-slate asset within the asset generated for VOD replay of your live event. This occurs regardless of whether the live event operator chooses to only add a portion of that mid-event slate asset or loops it multiple times. In the case in which the live event operator loops a mid-event slate asset multiple times, it will only be included a single time for that instance of slate.
To set a live event's slate configuration
Change the default pre-event, post-event, ad, or missing content slate by clicking Change that appears directly below the desired slate and then selecting the desired asset.
You may only choose an asset from the default CMS library for the type of slate being configured.
Optional. If you would like to include mid-event slate within the asset generated for VOD replay of your live event, then enable the Enable Slate in VOD Replay option.
If you enable this option, then you should also select a CMS library that you own in the next step. If you select a shared CMS library instead, the live event operator will be unable to include mid-event slate within the VOD replay asset regardless of whether you have enabled this option.
From the Mid Slate Library option, select the desired CMS library.
All assets within the selected library will be available for selection as source content from within the Switcher pane of the Live Events Dashboard.
To define a default slate configuration
From the Content tab, organize assets that will serve as slate content into one or more CMS libraries.
You may assign different libraries for each type of slate.
Ad Slate: Perform the following steps to set the default asset that will be broadcast as slate during an ad break when ad content is not being received:
Missing Content Slate: Perform the following steps to set the default asset that will be broadcast as slate when content is not being received and the live event is not in an ad break:
Pre-Event Slate: Perform the following steps to set the default asset that will be broadcast as slate prior to the start of a live event:
The asset that will serve as pre-event slate may be changed prior to the start of the live event from within the Live Events Dashboard.
Mid-Event Slate: Set the Mid Event Slate Library option to the CMS library that contains assets that may be used as mid-event slate.
All assets within the selected library will be available for selection as source content from within the Switcher pane of the Live Events Dashboard.
An asset for your live event may be generated upon its completion. The option to include mid-event slate within that asset is only available when inserting slate using an asset that you own.
Post-Event Slate: Perform the following steps to set the default asset that will be broadcast as slate after the live event has completed:
After the end of a live event, post-event slate will automatically play in one of the following modes:
The EXT-X-END tag will be included in the HLS manifest file to indicate the end of post-event slate. It is up to a media player to interpret this tag.
Learn more.
Set one of the above modes under the Post Event Slate Duration section of the Live Events page.
A single playback URL allows the playback of the live event as a live stream and on-demand content.
To set up a media player for use with a live event
Generate a playback URL using either the live event's ID (i.e., GUID) or external ID.
Event ID: An event ID is automatically generated upon creating a live event.
Copy a playback URL by navigating to the Live Events page. , viewing the desired live event, clicking the Playback tab, and then clicking copy from under the HLS URL option.
Syntax:
External ID: An external ID may be assigned to a live event upon its creation or modification.
Syntax:
If you are setting up a HLS player, you may add support for fast forwarding, rewinding, or pausing and resuming through the Live Timeshifting capability.
Latency measures the delay between the capture of the source video and when it is displayed to the viewer.
If you do not see the Playback Latency option, contact Support.
The following illustration provides an overview of components involved in the workflow from video capture to playback.
A short explanation of how each of the above components adds latency is provided below.
Component | Latency Factors |
---|---|
Slicer |
The amount of time it takes to slice and deliver processed media to our Streaming service. This may be exacerbated by using underpowered hardware or insufficient bandwidth for your encoding profile. |
Streaming Service |
The amount of time it takes to decode, encode, and package sliced media into an adaptive bitrate format. |
Digital Rights Management (DRM) |
The amount of time it takes to request and generate licenses for content protected by DRM. |
|
|
CDN |
The amount of time it takes to cache and deliver your stream to the player. |
Player |
The amount of time it takes to initialize and then play your stream. This may be exacerbated by clients that use underpowered hardware or that have insufficient bandwidth. |
Manifest Engine | Decisioning logic that controls the timing and creation of individual manifests for playback by users. |
Reduce latency by applying the following best practices:
The following optimizations are listed in descending order according to the degree to which they will reduce latency.
Type | Optimization(s) |
---|---|
Playback Profile |
Selectable, pre-figured control file that contains the parameters related to reduced-latency options. Used during manifest creation and driven by selectable latency options. Use the drop-down on the Channel's Details tab and the Live Event's Config tabs. See Selecting playback latency to choose latency options. Selecting a low latency playback option (other than default) may increase the probability of missing content slate and decrease the number of ad fills. Contact our Professional Services Group for assistance on how to optimize this setting for your environment. In addition to the selectable latency settings, a variety of factors, such as the hardware on the computer hosting the Live Slicer, ad workflow, encoding profile, and platform/ player affect the latency achieved, the quality of the customer viewing experience, and the ad monetization. Any latency numbers associated with settings are estimates, and your individual results may vary. Chopping / Dropping Ads Reduce ad-related latency by either chopping or dropping ads upon exceeding ad break duration. Use ad.flex to determine the number of seconds that an ad can extend beyond an ad break before being chopped or dropped. |
Player |
Client Use a player (e.g., THEOplayer) that supports two second media segment files and fast startup times. The HLS specification requires that a player wait for three media segments prior to initiating playback. DASH, on the other hand, can initiate playback immediately. This, in theory, allows DASH to offer lower latency than HLS, but in practice, testing has shown little difference between the latencies achieved by HLS or DASH. Different HLS players offer varying degrees of latency. Different protocols and platforms may affect latency beyond the control of Edgio. |
|
|
Re-encode Slate (Two Second Media Segments) A player may only switch from slate to your main content once it finishes playing the current media segment. Use slate that has been encoded in two second media segments to reduce the potential amount of time that the player must wait before switching to your main content. This recommendation should be applied regardless of whether your account has been configured to generate two second media segments for your main content. System slate has already been encoded using two second media segments. |
|
|
|
Ads |
|
Automation / Playout System |
Ad Break Notifications Ensure that upcoming ad breaks are added to the video stream (e.g., via SCTE triggers) with sufficient lead time to allow the ad decisioning server to provide ad creatives to our service. |
Adaptive Bitrate Streaming |
Format Both DASH and HLS are supported. |
Cloud |
Network Connection If streaming to a cloud-based slicer, ensure optimal egress for your encoded media. Leverage newer streaming protocols such as SRT and RIST, with settings that limit the latency to the recommended minimal values based on the network round-trip time. |
Default latency for Live Channels and Live Events is 60+ seconds. To reduce latency to ~15 seconds, refer to the Playback Latency for channels and events for setup instructions.
Latency options:
Default: ~60 seconds
Low: Low 20s, 5+ second buffering, Missing Content Slate (MCS) is possible
Lower: Upper teens, 2+ seconds buffering, MCS is possible
Lowest: As low as 15 seconds, minimal buffering, no MCS
Different protocols and platforms may affect latency beyond the control of Edgio.
Important Considerations:
You should only allow a single operator to manage a live event. Using multiple operators on a single live event may lead to unexpected behavior.
If the live event has been scheduled and configured to automatically start/stop, then no additional actions need to be taken.
Override auto start/stop by turning it off from the live event and then saving your changes. Alternatively, an operator may override auto start/stop by opening the live event in the Live Events Dashboard and then clicking Cancel from the upper-right hand window. After which, the operator should start the following procedure from step 3.
To broadcast a live event
Verify that a connection was established to the Live Slicer(s) associated with the live event configuration.
A live event may be managed over the internet provided that a firewall does not prevent communication between the Live Events Dashboard and the Live Slicer. Otherwise, an operator should load the Live Events Dashboard from within the same network as the Live Slicer.
Troubleshooting: If a connection to the Live Slicer cannot be established, verify that SSL support has been added to the Live Slicer. Alternatively, the operator should look for a warning icon in the browser's address bar. Click on that icon to accept the potential security risk of loading content via HTTP alongside HTTPS traffic. Eliminate this security risk by adding SSL support to the Live Slicer.
Test the live event via the Live Events Dashboard.
This step may be skipped by removing the live event testing requirement from the Live Events page.
Monitor the live stream to identify the starting point of the live event and then start the live event from the Live Events Dashboard.
Best Practices:
If you are monitoring multiple live events, then consider performing the following steps to reduce CPU usage:
From within the Switcher pane, insert ad breaks and slate content as needed.
Ad Break
Start an ad break via one of the following methods:
Ad Pods: Select the desired ad pod to queue it up. Select the same ad pod to start the break. The ad break's current duration will be indicated next to the ad pod. The ad pod will automatically end upon reaching the ad pod's duration.
This method is only supported for ad pods defined within the Pod Format tab of the live event configuration.
Learn more.
The feed will switch over to the content generated by the Live Slicer selected under the Slicers pane.
Slate
Start inserting slate by finding the desired asset from within the Mid Event Slate section and then either clicking on it or the Save to Replay option.
The Save to Replay option includes slate when viewers watch your live event as on-demand content. If the Save to Replay option is not displayed, then slate will be excluded during VOD replay.
Upon selecting the desired slate content, the Switcher pane will indicate the total duration of slate content. Click the Slicer tile to switch back to the content generated by the Live Slicer selected under the Slicers pane.
It is possible to resume a live event after it has been stopped.
Learn more.
The Live Events Dashboard indicates a Live Slicer's status using the following indicators:
This status information is only designed to measure the connectivity between the Live Slicer and the Live Events Dashboard. Monitor Live Slicer health through the Live Slicer Health dashboard.
Learn more.
The Live Events Dashboard contains a test mode that allows an operator to validate source content and replicate the viewing experience prior to the start of the live event.
Testing mode is designed to replicate the experience that a viewer will have when streaming a live event. However, viewers attempting playback prior to the start of the live event will only see pre-event slate.
Determine whether live event testing is mandatory through the Require testing before a live event can be started option which can be found under the Additional Configuration Settings section of the Live Events page.
To test a live event
This mode allows the following tests to be performed:
Under the Switcher pane, click on each thumbnail to verify each of the following audio/video sources:
Slicer: This thumbnail displays the content being ingested by the Live Slicer selected under the Slicers pane. Selecting a different Live Slicer under the Slicers pane will automatically update this thumbnail to display the feed generated by the newly selected Live Slicer. This allows the live event to be quickly failed over to a different Live Slicer when the current one is experiencing issues.
It is strongly recommended to only fail over a feed to a backup Live Slicer that is ingesting an identical audio/video feed. This capability should not be used to switch between alternate audio/video feeds.
Slate: The remaining thumbnails list the set of assets that may serve as mid-event slate.
Replicate a viewer's experience by playing back the stream via the sample media player provided from the Audience View pane. This sample media player can stream the source defined in the Switcher pane using a playback URL with the same query string parameters that will be used by your custom media players during the live event.
Customization parameters may be applied to the playback URL leveraged by the Audience View preview by defining them in the URL Params setting. Click Update to apply the new playback URL to the Audience View preview.
The Slicer Live Preview pane provides a real-time preview of the source selected in the Switcher pane, while the Audience View pane provides an approximation of a viewer's experience.
Key information:
The real-time preview provided by the Slicer Live Preview pane requires:
Live Slicer configuration settings: Update the Live Slicer configuration file (/etc/uplynk.conf) to include the following settings:
Setting | Description |
---|---|
preview: on |
Enables the Slicer Live Preview. If the livepreview_with_audio setting is not enabled, then this preview will only consist of video. |
livepreview_with_audio: on |
Requires Slicer version 22083100 or higher Enables audio for the Slicer Live Preview. The Slicer Live Preview pane displays audio levels regardless of whether this setting is enabled. |
livepreview_max_viewers: # |
Determines the maximum number of simultaneous viewers of a live preview. Each instance of a live preview consumes resources on the computer hosting the Live Slicer. This setting is designed to prevent performance issues by capping the number of simultaneous connections. |
Broadcast a live event to viewers by starting it. This will cause the following actions to take place:
Once the live event is over, it will need to be stopped. This will cause the following actions to take place:
An on-demand version of the asset will be added to the CMS library. The live event's configuration determines whether this asset will be available for immediate playback.
To start and stop a live event
If multiple Live Slicers have been associated with a live event configuration, then the stream can be quickly failed over by selecting the feed for a different Live Slicer from the Slicers pane.
The following live event information may be viewed at any time after entering the event by clicking the Event Details tab:
Pre-event slate
A live event's pre-event slate may be changed from this tab prior to the start of the live event.
Audit log data that tracks major events (e.g., event creation, source switching, event started/ended, etc.). Audited events may be posted to your web server.
A live event may be resumed for a short window (i.e., 1 to 5 minutes) after it has been stopped. This capability allows an operator to undo a premature stop event action.
Key Information:
Contact your account manager to activate Syndication Publishing.
In addition to streaming content directly to your consumers, you may also simultaneously distribute it to multiple social media and content distribution platforms with minimal effort.
Set up Syndication Publishing by performing the following steps:
Upon the completion of a live event, an asset will be automatically added to the CMS library. This asset is described below.
A live event may be assigned a different CMS asset. A common use case for this capability is to create a clip from a live event and then set it as the on-demand version of the live event.
Reassigning the asset associated with a live event will trigger the following actions:
To change the asset associated with a live event
Click Change VOD Asset from the notification bar.
The playback URL associated with a live event may be used to stream it while the live event is in the Live (On Air) state. Once the live event is completed, the live event's VOD Replayable option determines whether that same URL may be leveraged to stream it as on-demand content.
The effects of this parameter on the user experience is described below.
Enabled: Post-event slate will be streamed after the live event is over.
If a specific duration has been defined for post-event slate, then it is mandatory for new and existing viewers.
The post-event playback experience for new and existing viewers is described below.
An alternative method to stream the live event as on-demand content is to play back the CMS library asset that was automatically generated from the live event. This may be performed through the asset's playback URL.
The behavior for a live event whose duration is 8 hours or longer will vary as described below.
Multiple assets will be added to your CMS library for long live events. These assets will be named according to the following convention:
For example, if three assets were generated for a live event called "Marketing Conference," then they would be named: Marketing Conference_1, Marketing Conference_2, and Marketing Conference_3.
On-demand playback of the live event will be through a multi-beam playlist. This playlist references the live event's temporary audio/video assets.
A media player may not support the playback of content that lasts over 8 hours. Please verify playback for each of your media players.
Although on-demand content is automatically generated once a live event is completed, there are certain circumstances under which you may wish to manually generate it. For example, you may wish to address a quality issue that was noticed during the live event. If one or more backup Live Slicers were associated with the live event, then you could generate alternate on-demand content by using any combination of content generated from the Live Slicers associated with the live event.
A temporary asset is generated by each Live Slicer associated with a live event whenever any of the following actions take place:
Switching between the Live Slicer and ad breaks will not interrupt a temporary asset. Although the content of the ad break will be excluded from the temporary asset, markers will track each ad break. Leverage these ad break markers and the Preplay API to insert ads during on-demand playback.
The naming convention for temporary assets will be set to either of the following values:
Name | Description |
---|---|
Test Primary Test Backup Primary Backup |
Each temporary asset generated from a live event will be assigned one of these names. The label(s) associated with each temporary asset describe it. Each label is described below:
|
<Live Event Name> |
Identifies the temporary asset that replicates the live viewing experience. A copy of this asset was imported into the CMS library. |
To manually generate on-demand content
Perform one of the following tasks:
Please wait 150% of the live event's duration before attempting to delete temporary assets.
Major events (e.g., creating, starting, and stopping a live event) are tracked for each live event. Our service can report these events as JSON data to a web server through HTTP POST requests. Your web server may then log this data and perform custom actions in response to specific types of events.
To post a live event's status information to your web server
Optional. Choose how you will authenticate requests posted to your web server under the Webhook Secret Token section.
Token or Signature Authentication: Perform the following steps:
Choose whether you will authenticate requests by checking for a token or verifying a signature of the request's payload.
Token: Select X-Edg-Auth-Token.
This mode ensures that each live event status request sent from our service to your web server includes an X-Edg-Auth-Token header set to your secret key.
Signature: Select X-Edg-Signature-256.
This mode ensures that each live event status request sent from our service to your web server includes an X-Edg-Signature-256 header set to an encrypted value that represents the request's payload.
Store your secret key in a secure location.
Access to a secret key is limited to when it is generated. If you lose your secret key, then you will need to generate a new secret key and update your server-side authentication script to reference it.
Verify that a request came from our service through either of the following authentication methods:
Token: This mode requires our service to include the X-Edg-Auth-Token header with each request it sends to your web server. This header is set to your secret key. You will need to implement a server-side script that compares your secret key to the X-Edg-Auth-Token header.
Sample validation function:
SECRET = '1234567890abcdefghijklmnop' # Replace with your secret key. ... def validate_authentication_token(self, content, callback): header_sig = self.headers.get(TOKEN_TYPE_AUTH_TOKEN) if SECRET == header_sig: callback(content, TOKEN_TYPE_AUTH_TOKEN)
Signature: Recommended. This mode requires our service to include the X-Edg-Signature-256 header with each request it sends to your web server. This header is set to a signature that is calculated by encrypting the request's payload using a hash-based message authentication code (HMAC-SHA256) and your secret key. You will need to implement a server-side script that calculates this signature and compares it to the X-Edg-Signature-256 header.
Sample validation function:
SECRET = '1234567890abcdefghijklmnop' # Replace with your secret key. ... def validate_signature_256(self, content, callback): msg = b64encode(zlib.compress(content.encode('utf8'), 9)).strip() sig = hmac.new(SECRET.encode('utf-8'), msg, hashlib.sha256).hexdigest() header_sig = self.headers.get(TOKEN_TYPE_SIGNATURE_256) if sig == header_sig: callback(content, TOKEN_TYPE_SIGNATURE_256)
View a sample Python 3 script that instantiates a sample web server and contains functions through which you authenticate a token or a signature.
The HTTP POST request body will contain the following properties:
Property |
Type |
Description |
---|---|---|
event |
String |
Describes the event that took place. A HTTP POST request will be submitted to your web server for each event. |
event_desc |
String |
Identifies a live event by its description. |
event_id |
String |
Indicates the system-defined ID for the event that took place. |
external_id |
String |
Identifies the asset associated with this event by its external ID. |
metatdata |
Object |
Contains a key-value pair for each metadata field associated with the event. |
state |
String |
Indicates the state of the live event at the point in time at which the event took place. Valid values are: pre | live | resume | post | complete
|
testing_complete |
Integer |
Indicates the date and time at which live event testing was completed. A null value is reported when live event testing had not been completed at the point in time at which the event took place. |
testing_start |
Integer |
Indicates the date and time at which live event testing was started. A null value is reported when live event testing had not been started at the point in time at which the event took place. |
timestamp |
Integer |
Indicates the date and time, in Unix time (milliseconds), at which the event took place. |
user_id |
String |
Indicates the system-defined ID associated with the user account that triggered the event. Where can I find my user ID?
|
username |
String |
Indicates the e-mail address associated with the user account that triggered the event. |
Live event states are defined below.
Value | Description |
---|---|
pre |
Indicates that the live event had not started. |
live |
Indicates that the live event was in progress. |
resume |
Indicates that the both of the following conditions were true:
|
post |
Indicates that the live event had completed and post-processing (e.g., creating on-demand content from a live event) was initiated. |
complete |
Indicates that the live event had completed and all post-processing tasks were completed. |
Events are defined below.
Value | Description |
---|---|
Added Metadata |
Indicates that metadata was added to a live event. |
Added Slicer |
Indicates that a Live Slicer was added to a live event. |
Added Test Player |
Indicates that a test player was added to a live event. |
Auto Event Mode Cancelled |
Indicates that a live event's auto start/stop mode was turned off. |
Auto Event Schedule Cleared |
Indicates that a live event's scheduled start/stop time was cleared. |
Auto Event Slicer Scheduling Error |
Indicates that there was an issue scheduling a Live Slicer for a live event that was configured to automatically start. |
Completed Test |
Indicates that an operator completed testing a live event. |
Error Scheduling Slicers For Auto Stop |
Indicates that there was an issue scheduling one or more Live Slicer(s) for a live event that was configured to automatically stop. |
Event Copied from Event ID |
Indicates that a live event was duplicated from an existing live event. The term Event ID identifies the ID of the live event that was copied. |
Event Created |
Indicates that a live event was created. |
Event Deleted |
Indicates that a live event was deleted. This deletion may have been performed manually or automatically upon its expiration. |
Event Ended |
Indicates that an operator ended a live event. |
Event Ended: Resume Available |
Indicates that an operator ended a live event that could have been resumed. |
Event Marker Set: Marker Type:Marker Name |
Identifies the marker that was applied to the live event. |
Event Resumed |
Indicates that an operator resumed a live event. |
Event Started |
Indicates that an operator started a live event. |
Event Updated |
Indicates that a live event was updated. |
Event VOD over max duration (8 hours) |
Indicates that a live event's duration exceeded 8 hours and therefore resulted in the creation of multiple CMS assets. On-demand playback of a long live event requires that your media player(s) support multi-beam playback. |
Started Test |
Indicates that an operator started testing a live event. |
Switched to Source |
Indicates that the audio/video feed was switched over to different source content via the Switcher pane. The term Source identifies the live event's new source (i.e., Live Slicer, ad, and slate). Non-Slate Syntax: Switched to Source
Slate Syntax: Switched to slate [in VOD] Mid-Event Slate Asset
The in VOD phrase indicates that slate was inserted using the Save to Replay option. |
VOD Asset Auto-Expired |
Indicates that an expired CMS asset was deleted. |
VOD Asset Deleted |
Indicates that a CMS asset was manually deleted. |
VOD Available |
Indicates that a CMS asset containing the audio/video feed for a completed live event was created. |
Updating a live event configuration will trigger Live Event Status Reporting. A sample request body for this type of event is provided below.
{ "username": "joe.smith@example.com", "user_id": "abcdefghijklmnopqrstuvwxyz123456", "external_id": "", "event_id": "1d6f7eb5fe474312947e73ccc1c57e32", "timestamp": 1572293065429, "event_desc": "My Live Event", "state": "pre", "testing_complete": null, "testing_start": null, "event": "Event Updated", "metadata": { "key2": "value2", "key1": "value1" } }
The following warning indicators will be triggered when overlapping events on the same Live Slicer are detected:
By default, overlapping events are detected via a live event's expected start/stop time. However, a live event may potentially start early or extend beyond the scheduled stop time. Account for these factors by setting before and/or after event buffers to pad live events.
Before and after event buffers are applied to all live events.
The Live Events Dashboard will only check whether a scheduling conflict will occur for scheduled live events. Before manually starting a live event, verify that it doesn't conflict with scheduled live events. Additionally, verify that the Live Slicer has not been associated with a live channel.
For example, let's assume that following conditions are true:
A live event has the following schedule:
In this scenario, a warning will be generated if another live event is scheduled on the same Live Slicer that meets either of the following conditions: