A live linear stream typically establishes a 24/7 audio/video feed from content captured via SDI or UDP. In addition to mirroring the input signal, it also supports content and ad replacement.
Basic Setup
Set up a live linear stream by configuring the following components:
-
Live Channel: A live channel represents a live linear stream that contains a timeline identifying live and on-demand content and when it should be played.
-
Slicer: Use a Live Slicer, Cloud Slicer Live, or both to capture and push audio/video content to a live channel’s timeline.
- Live Slicer: A Live Slicer is a Linux daemon. Use the Channel API to populate a live channel’s timeline with pre-encoded content and/or live feeds from additional Live Slicers.
- Cloud Slicer Live: Cloud Slicer Live allows you to run a slicer in our cloud. This allows you to ingest and encode content without on-premise hardware.
-
-
Once a live linear feed has been processed into a stream, it may be played back from anywhere in the world.
-
If you are setting up an HLS player, you may add support for fast forwarding, rewinding, or pausing and resuming through the Live Timeshifting capability.
-
How it Works
The following diagram illustrates the flow through which a live linear feed is processed and then streamed to users around the world.
As illustrated above, a stream is generated from a live linear feed through the following phases:
-
Push to Live Slicer: The existing broadcasting infrastructure pushes a live linear feed to a Live Slicer via either UDP or SDI.
-
Slicing: Both the Live Slicer and the Cloud Slicer Live slice, encrypt, and then upload content to the cloud.
-
Encoding and Storage: Our cloud encoders encode audio/video into H.264/H.265 and AAC. After encoding, the media is added to cloud storage.
As viewers request the live linear feed, it is served via our CDN service, ensuring an optimal viewing experience by efficiently delivering data worldwide.
Prevent hotlinking by digitally signing the playback URL.
Security measures, such as Blackout, may be applied to the stream to restrict playback to authorized users.
Latency
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. |
Ad Decision Server |
|
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. |
Best Practices for Reducing Latency
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 |
|
Player | Client
|
Encoding Profile | Two Second Media Segments
|
Slate | Re-encode Slate (Two Second Media Segments)
|
Slicer |
|
Ads |
|
Automation / Playout System | Ad Break Notifications: Ensure timely ad breaks in the video stream with SCTE triggers for ad decisioning. |
Adaptive Bitrate Streaming | Format: Supports both DASH and HLS. |
Cloud | Network Connection: Optimize egress for encoded media with newer streaming protocols like SRT and RIST, minimizing latency based on network round-trip time. |
Select the Playback Latency
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
- Many factors are in play for reduced latency. Any latency numbers referenced by Edgio documentation are estimates. Actual results may vary.
- Reducing latency does not currently work with Time Shifting.
- Inconsistent Slate Slice Duration is not recommended and will give unpredictable latency results.
- Four-second profiles may still work but won’t achieve the desired latency results and are unlikely to produce any video at the lowest setting.
- Two-second profiles without Playback Latency settings will give default delays.
- Existing V1 channels will not see the Playback Latency drop-down.
- MCS latency can only be removed via ad-break opportunities or new sessions.
- Player buffering cannot be controlled via Edgio’s Streaming service.
- Platform specificity may vary latency by multiple seconds.
- Many factors contribute to latency, so playback latency may vary.
- If using a Channel Scheduler with historical, four-second segment assets, you cannot schedule those assets onto an Edgio-enabled channel.
- The act of ‘Creating’ a CSL slicer will always create (/override) a profile to slicer ID mapping, even if using the default profile. Slicer Resets will not update the mapping.
- Due to continued testing, new technology, and other factors, playback profile parameters used by the manifest engine may change from time to time, without notice.
Live Timeshifting
Contact your account manager to enable the Live Timeshifting capability on your account.
The Live Timeshifting capability for HLS allows viewers to fast forward, rewind, or pause / resume for up to one hour from the time they join a live event or a live channel’s stream. This capability is achieved by expanding the playback window up to 60 minutes.
Our implementation uses the HLS Playlist Delta Updates standard which allows us to serve historical segments on the media player’s initial request and recent changes on subsequent requests. This minimizes the time required to load and maintain a larger playback window for your viewers.
Key information
-
Historical segments exclude ads. Any ads that occurred before the media player joined the stream will be unavailable for playback. However, ads played after the media player joined the stream should be available for replay.
-
If the Live Timeshifting capability is enabled and the hlsver parameter is set to a version lower than 9, then it will be overridden by version 9.
Requirements
The Live Timeshifting capability requires:
-
A media player that supports HLS 9 or higher.
-
A playback URL for a live event or a live channel whose query string includes the hist parameter set to the desired historical playback time in minutes.
Example:
hist=50
Sample playback URL:
https://content.uplynk.com/event/abc580a0080e4d438a09c97a54cc7ab1.m3u8?hist=50
Initial and Subsequent Playlist Responses
The initial playlist response for a playback request that meets the above requirements includes:
- The
CAN-SKIP-UNTIL
tag, which advertises Delta Updates availability, and tells the player how old a segment has to be in order to be skipped. - The
MEDIA-SEQUENCE
tag set to 0, since this is the first response. - The full playlist including requested historical playback segments.
Initial Playlist Response Example:
1#EXTM3U23#EXT-X-VERSION:945#EXT-X-PLAYLIST-TYPE:EVENT67#EXT-X-TARGETDURATION:489#EXT-X-SERVER-CONTROL:CAN-SKIP-UNTIL=36.01011#EXT-X-MEDIA-SEQUENCE:01213#EXTINF:4.00,1415fileSequence0.ts1617#EXTINF:4.00,1819fileSequence1.ts2021#EXTINF:4.00,2223fileSequence2.ts2425#EXTINF:4.00,2627fileSequence3.ts2829#EXTINF:4.00,3031fileSequence4.ts3233...
The player decides whether to request a Delta Update by appending the
_HLS_SKIP=YES
directive to the stream request. When a Delta Update is requested, the server skips the old segments and only includes the most recent segments in the manifest. As playback progresses, the server notifies the media player as to:- The number of segments that have been skipped through the
#EXT-X-SKIP
tag. This tag replaces all the segment URL lines which were added to the playlist before the skip limit. - The number of segments that have been rolled off through the
#EXT-X-MEDIA-SEQUENCE
tag. - Delta Updates availability through the
CAN-SKIP-UNTIL
tag.
Subsequent Playlist Response Example:
1#EXTM3U23#EXT-X-VERSION:945#EXT-X-PLAYLIST-TYPE:EVENT67#EXT-X-TARGETDURATION:489#EXT-X-SERVER-CONTROL:CAN-SKIP-UNTIL=36.01011#EXT-X-MEDIA-SEQUENCE:2661213#EXT-X-SKIP:SKIPPED-SEGMENTS=5271415#EXTINF:4.00,1617fileSequence793.ts1819#EXTINF:4.00,2021fileSequence794.ts2223#EXTINF:4.00,2425fileSequence795.ts2627#EXTINF:4.00,2829fileSequence796.ts3031...
Set up a Live Linear Channel
Learn how to stream a live linear feed. Alternatively, stream a single live event by taking advantage of our live event streaming capabilities.
Software Prerequisites: Linux
Knowledge Prerequisites: Basic understanding of Linux
Key Steps
- Create a live channel.
- Install, configure, and start the Live Slicer.
- Capture media.
- Test playback.
Step 1: Set Up an Account and Sign in
An account is required to stream content via our service. Learn more.
Sign in to the CMS.
Step 2: Create a Live Channel
A live channel determines how content generated by a Live Slicer will be made available to viewers.
-
From the Streaming section of the CMS, navigate to the Live Channels tab.
-
Click +Channel from the bottom-left hand corner of the CMS.
-
In the Channel Name option, type the name that will be assigned to the live channel.
-
In the Slicer ID (Optional) option, type the alphanumeric ID that will be assigned to the live channel.
-
(Optional) Set channel options:
- Check the Enabling Scheduling option to use the advanced scheduling interface and the latest channel APIs.
- Tick the Edit after creation box to open the record after submitting.
-
Click Create.
Step 3: Install the Live Slicer
-
Install the Live Slicer on a Linux computer. View minimum system requirements.If you plan on using a Blackmagic DeckLink SDI capture card, then the Live Slicer must be installed on the computer where that card is housed.
-
For Live Slicer version 21092100 or higher:
-
Install the
libnl-3.200
library.Bash1sudo apt install libnl-3-200
-
-
Install Python and bzip2 applications.Bash1sudo apt install python bzip2
-
Download the Live Slicer by clicking Downloads from the bottom right-hand corner of the CMS and then clicking on the desired OS.
-
Extract the zip file to the desired directory.1$ tar -xvf uplynk_slicer_linux_64-231114.04.01.tbz2
-
Navigate to the newly created directory.1$ cd uplynk_slicer_linux_64-231114.04.01-master/
-
Run install_live.1$ sudo ./install_live
Step 4: Configure the Live Slicer
Define Live Slicer settings within the Live Slicer configuration file.
-
Open
/etc/uplynk.conf
in a text editor. -
Set the
username
setting to the email address associated with your account.plaintext1username: joe@example.com -
If present, delete the password line.1password: samplepassword
-
If missing, add a line for the apikey setting. Set it to your secret API key. Find you API key via Integration Keys > Settings tab > Integration Keys from the side navigation > API Keys section.1apikey: abcDEFghiJKLmnoPQRtuvWXYz123ABCdefGHIJKL
-
Set the slicerID setting to the case-sensitive slicer ID assigned to the channel in step 2.1slicerID: marketingvids01
-
Set the card setting to the number assigned to the Blackmagic capture card that will generate the source feed.1card: 1
Step 5: Start the Live Slicer
Start or restart the Live Slicer whenever you modify the Live Slicer configuration file.
Start the Live Slicer using one of the following commands:
-
UpstartBash1sudo start uplynk_liveslicer
-
systemd1sudo systemctl start uplynk_liveslicer.service
Step 6: Start Audio/Video Capture
Set up the Blackmagic capture card to capture the audio/video feed.
-
Connect an audio and video source to the Blackmagic capture card.
-
Open Blackmagic system preferences and configure the connections as input sources.
-
Open Preferences (Edit > Preferences) and then:
- Set a project format.
- Choose a capture file format.
- Specify a storage location.
-
Close Preferences and click on the Log and Capture tab.
-
Click Capture. The Live Slicer will automatically pick up the feed.
Step 7: Test the Live Linear Stream
Congratulations on successfully creating and broadcasting a live linear feed. It is now time to test the stream through the test player provided from the CMS.
A link to a test media player that has been exposed to unauthorized individuals may be invalidated at any time by clicking the rubbish bin icon within the live channel’s Test Players (Warning: Restriction free) section.
-
From the Live Channels tab in the CMS, make sure that the live channel is selected.
-
Click the Playback tab.
-
From the Test Players section, follow the View link corresponding to the desired test player.
Please refer to our media player tutorial to learn how to create a media player.