Delivering Live Streaming Video

Product
Video Cloud
Applies to Roles
Publisher
Version
Brightcove 5
Edition
Pro, Enterprise

Video Tutorial

 

This document describes the options available and the steps for delivering live streaming video through your Video Cloud players. 

The Video Cloud live streaming video feature enables you to load and manage a live stream connection in a Video Cloud player without any custom development or complex integration. Since the Video Cloud live streaming integration is built on the same framework as on-demand video, you can take advantage of the rest of the Video Cloud service capabilities. That includes full metadata, scheduling, bumpers, geo-restriction, Media APIs, custom live video players, and the ability to mix on-demand and live streams together in the same playlists.

Live streaming support is available only for Video Cloud Pro and Enterprise publishers.

Video Cloud also supports live streaming with DVR. This player feature, powered by Akamai HD, makes a live streams act like it was being played through the viewer's digital video recorder. For more information, read Delivering Live Video with DVR. Live video with DVR is available only for Video Cloud Enterprise publishers.

Before you begin

Delivering live streaming requires coordination with your your Content Delivery Network (CDN) and special set-up for your Video Cloud account. Read Enabling Your Account for Live Streaming to make sure you have met the required configuration steps.

Delivering live streaming video: Main Steps

Here are the main steps for delivering live video streams through your Video Cloud players:

  1. Choose an encoding software solution.
  2. Configure the end point in your encoding software.
  3. Create a video in your Video Cloud media library for the live stream. This must be a video with remote assets.
  4. Program a player with live streaming.

The following demo gives an overview of the process of delivering live video streams.

videosVideo Tutorial: Delivering Live Video

Choose an encoding software solution

Choose and install hardware and software that enables you to capture live video and stream it in real time to the Flash Media Server hosted by your CDN. For example, Adobe offers a free download of Flash Media Live Encoder. You can use the Flash Media Live Encoder software to encode to On2 VP6 and H.264 formats. You can also use the Flash Media Live Encoder to save broadcast recordings as static assets that you can edit and upload into a Video Cloud account as on-demand videos, making the live video available after the live event has finished.

If you are using the Limelight CDN, download and install the Limelight Access Adapter for Windows or for Mac OS. This adapter makes using and configuring Flash Media Live Encoder easy, and also supports NewTek's TriCaster portable live production solution. Read more about the Limelight adapter. You can use Telestream's Wirecast without the Limelight Access Adapter.

There are many other hardware and software solutions that can broadcast video to Flash Media Server. Ask your video production team or partners to research which solution would be best for your particular workflow.

Configure the end point in your encoding software

In this section, you will configure your encoding software to publish to the proper FMS end point for your CDN. You can get this end point information from Brightcove Customer Support. For example, suppose you are using Adobe Flash Media Live Encoder. In FMLE, set the following encoding parameters:

  • FMS URL: The FMS URL is where the Adobe Flash Media Live Encoder pushes the stream data to the CDN. You will receive this URL in an e-mail from Brightcove Customer Support when you set up your account for live streaming video. Read Enabling Your Account for Live Video for more information. Select an FMS URL that is located close to the location your live event originates from. Note that the FMS URL and the remote-url are completely different values. The remote-url is where the player pulls the video stream from the CDN.
  • Stream: The Stream name should be the same value as the remote-stream-name in the XML manifest. For example: livestream

Live Connection Settings
Setting the end point parameters

When you initiate the connection, you will be prompted for a user name and password to authorize and start stream publishing.

Note that you can re-use the same stream URL and stream name for multiple successive broadcasts, as long as they are not simultaneous. You can then use the same Video Cloud video object for successive broadcasts, editing the metadata for each broadcast. If you decide to use the multiple live stream option, you must add the following unique value (_%i) within the stream name field in the Flash Media Live Encoder application.

Creating a video in Video Cloud for the live stream

To create your live stream as a video in your Video Cloud account, you create a video that uses remote assets. You can create this video using either:

Creating a live stream video using the Media module

You can create a live stream video using the Media module. In the Media module:

  1. Click Add Videos and select Remote Assets.
  2. In the Add Media to Library screen, select Live as the video type. Select your CDN as the delivery type.
  3. For each rendition of your live stream, enter the URL of your live stream. Depending on your CDN, you may also need to enter a stream name. See Entering rendition information for details.

For more detailed information, read Creating videos with remote assets using the Media module.

Creating a live stream video using FTP batch provisioning

To create your live stream video usiing FTP batch provisioning, you upload an XML file to the Video Cloud FTP server. This XML file, which uses the Video Cloud FTP batch provisioning feature, creates the live asset as a video in your account. You can upload an FTP batch provisioning manifest that describes a single live video stream, or one that describes multiple live streams of the same event, which enables multi-bitrate video.

Once you have created the FTP batch provisioning manifest, use the FTP credentials you received from Brightcove Customer Support and upload the manifest to the Video Cloud FTP server. You can use an FTP client such as Filezilla to upload your XML manifest.

When you upload the file and Video Cloud server has received it, the Video Cloud FTP server will send an e-mail message to the specified notification e-mail address within the XML manifest. The notification you will receive from the FTP server will complain of a missing 'size' attribute: "The remote asset named 'Live Video' has an empty 'size' attribute. This remote asset will be processed without a size attribute. This will be a required attribute in future builds. Please migrate your scripts to include it." Ignore this error message.

When you sign into the Video Cloud Studio, you will find the live stream video in the Media module.

FTP batch provisioning manifest for a single live video stream

The following is an example of an FTP batch provisioning manifest for a single live stream. Copy the code for the FTP batch provisioning manifest and modify the values according to the specifics of your account and live stream. 

<?xml version="1.0" encoding="utf-8" ?>
<publisher-upload-manifest publisher-id="BC ACCOUNT ID" preparer="NAME" report-success="true">
    <notify email="EMAIL ADDRESS" />
    <remote-asset refid="livevideoasset"
      display-name="Live Video Asset"
      type="VIDEO_FULL"
      remote-url="rtmp://brightcove.fc.llnwd.net/brightcove/001"
      remote-stream-name="livestream"
      video-duration="-1"
      video-codec="ON2"
      controller-type="LIMELIGHT_LIVE"
      />
    <title name="Live Video"
           active="TRUE"
           refid="livevideotitle"
           video-full-refid="livevideoasset" >
       <short-description>Live Video Stream</short-description>
    </title>
</publisher-upload-manifest>

 The XML manifest file must include a <remote-asset> element with the following attributes:

attribute description
refid A reference ID for the stream. This reference ID will link the <remote-asset> element to the <title> element.
remote-url The RTMP connection point for stream delivery provided by your CDN
remote-stream-name The end point for the stream; equivalent to the Stream value in Flash Media Live Encoder.
video-duration -1
video-codec ON2 (use this setting even if you're actually using H.264)
controller-type Depending on your CDN, one of LIMELIGHT_LIVE, AKAMAI_LIVE or LIVE_STREAMING.

Your XML manifest also needs to include a <title> element. This element must include a video-full-refid attribute, whose value is the refid attribute of the <remote-asset> element. The <title> element can also include useful metadata about the live video. Read more about setting metadata in the <title> element in the Creating or updating videos with the title element section in FTP Batch Provisioning: Reference for the XML manifest.

If you are creating multi-bitrate streams, you will have a separate <remote-asset> element for each live stream rendition, as is described in the following section.

FTP batch provisioning manifest for multi-bitrate streaming of live streaming video

You can create multiple streams of the same live video source at different quality levels, and Brightcove's multi-bitrate streaming feature will select the rendition that best fits each viewer's bandwidth and player size.

Here are the steps to take to create a multi-bitrate streaming of your live video:

  1. Create multiple streams at different sizes and bit rates, using your live capture solution. When you choose your stream sizes and bit rates, consider the players, bandwidth, and devices you expect your audience to have available.
  2. In your FTP batch manifest, create a <remote-asset> element for each live stream rendition. Make sure you set each of these attributes in the <remote-asset> element to the same value as the live stream rendition: encoding-rate, frame-width, frame-height.
  3. In the <title> element of your FTP batch manifest, reference each of the live stream renditions in a <rendition-refid> child element. The value of each <rendition-refid> child element is the refid attribute of each rendition's <remote-asset> element.

If you are using Adobe Flash Media Live Encoder, specify a single stream name as mystream_%i in FMLE. FMLE replaces the %i variable in the stream name with incrementing integers starting with 1. Therefore, create a <remote-asset> element in your FTP batch manifest for each live stream rendition with names like the following examples:

mystream_1
mystream_2
mystream_3

The following is an example of a FTP batch manifest for a live video that has multi-bitrate streams. Note that it is just like the previous example for a single video stream, except that it contains a separate <remote-asset> element for each live stream rendition. Copy the code for the FTP batch provisioning manifest and modify the values according to the specifics of your account and live stream. 

<?xml version="1.0" encoding="utf-8"?>
<publisher-upload-manifest publisher-id="17359650" preparer="Robert Saint-Loup">
  <notify email="rstloup@example.com" />
    <remote-asset refid="LIVE_320x240_150kbps"
        display-name="LIVE_320x240_150kbps - Remote Asset"
        type="VIDEO_FULL"
        video-duration="-1"
        video-codec="ON2"
        remote-url="rtmp://my.fc.exampleCDN.net/brightcove/001"
        remote-stream-name="live_multiple_1"
        controller-type="LIMELIGHT_LIVE"
        encoding-rate="150000"
        frame-width="320"
        frame-height="240"
        />
    <remote-asset refid="LIVE_640x480_300kbps"
        display-name="LIVE_640x480_300kbps - Remote Asset"
        type="VIDEO_FULL"
        video-duration="-1"
        video-codec="ON2"
        remote-url="rtmp://my.fc.exampleCDN.net/brightcove/001"
        remote-stream-name="live_multiple_2"
        controller-type="LIMELIGHT_LIVE"
        encoding-rate="300000"
        frame-width="640"
        frame-height="480"
        />
    <remote-asset refid="LIVE_960x720_650kbps"
        display-name="LIVE_960x720_650kbps - Remote Asset"
        type="VIDEO_FULL"
        video-duration="-1"
        video-codec="ON2"
        remote-url="rtmp://my.fc.exampleCDN.net/brightcove/001"
        remote-stream-name="live_multiple_3"
        controller-type="LIMELIGHT_LIVE"
        encoding-rate="650000"
        frame-width="960"
        frame-height="720"
        />
  <title name="MBR Title with Remote Assets" refid="MBR Live Remote Assets" active="TRUE">
    <short-description>Live streaming title with three renditions.</short-description>
    <rendition-refid>LIVE_320x240_150kbps</rendition-refid>
    <rendition-refid>LIVE_640x480_300kbps</rendition-refid>
    <rendition-refid>LIVE_960x720_650kbps</rendition-refid>
  </title>
</publisher-upload-manifest>

Dynamic streaming and live video

Video Cloud players playing a live stream can take advantage of advanced smooth streaming capabilities enabled by Flash Media Server 3.5 and Flash Player 10. Dynamic streaming improves bandwidth detection, while also detecting dropped frames, which are a symptom of too-high CPU usage on the client. Dynamic streaming is enabled by default in the player publishing code. To disable these capabilities in a player, modify the player's publishing code and remove the dynamicStreaming player configuration parameter from the publishing code. 

Programming a player with live streaming

A live video stream acts much like an on-demand video in Video Cloud. You can view your live video in your Media Library in the Media module. You can add the live video to a playlist and program it in a player. You can edit the live video and set video properties, like the name, tags, short description, schedule, and so forth. 

The easiest and quickest way to publish your video in your player is to use the Quick Video Publishing method: just select the live video in the Media module, click the Quick Video Publish, and select the player you want to use.

When you view a live video in the Media module, its thumbnail in the details pane is labeled as LIVE VIDEO.

Live Video
Live video in the Media module.

All Video Cloud player templates support live streaming videos natively. You can mix live streaming and on-demand videos in the same playlists or players and the player will handle the live stream appropriately. When a Video Cloud player encounters a live video, it automatically hides the playhead and displays a message that the video stream is live.

Player with LIVE button
Player with LIVE button.

You can style a player's live video button using the Publishing module. Select your player's VideoPlayer or MediaControls component, and then expand the Live Button to show all of its stylable facets.

You've completed the procedure for publishing live video in your player. Next, you can deliver ads along with a live video stream. Advertising with live video works mostly the same as advertising with on-demand video, with a few exceptions. Read more about advertising and live video.

Limitations

Live video streams have the following known limitations:

  • You can't use the Preview in the Media module Details pane to view live videos. If you want to preview a live video stream, select the live video in the Media module and use the quick video publishing feature in the Media module to get the URL of the live stream. You can then open that URL in a browser.
  • Video Cloud does not supply reporting information specifically about live streaming videos. Usage, including stream starts and bandwidth, is reported on a combined basis with all video usage including on-demand video. You can, however, look at per-video metrics to determine performance usage of live broadcasts. You can integrate custom analytics SWFs for any special tracking required for live video usage.

 

Tags
live