This document describes the steps for delivering live streaming video with DVR through your Video Cloud players. For a list of all the options available from Brightcove for delivering live streaming video, see Delivering Live Streams.
DVR is a player feature, powered by Akamai HD, that makes a live streaming video act like it was being played through the viewer's digital video recorder. If you are streaming a live event, DVR controls allow your viewers to scrub back in time, while the live event is still in progress, to replay a highlight or check out a clip they may have missed.
Note that your archived Live streams will be removed from the CDN after 7 days. For customers that want to keep Live DVR content for longer than a week, we recommend that you create a video-on-demand asset in your Video Cloud account from your Live DVR. This is typically done by capturing your live event locally during a live event and then uploading it as a regular asset when the live event completes.
Video Cloud player displaying live video with DVR
The Video Cloud live streaming with DVR 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 Video Cloud's service capabilities. That includes full metadata, scheduling, geo-restriction, localized players, and the ability to mix on-demand and live videos together in the same playlists.
Live streaming support with DVR is available only for Video Cloud Enterprise publishers. Live streaming video support without DVR is available for Video Cloud Pro and Enterprise publishers. While live video with DVR is powered by Akamai HD, you don't need to use Akamai as your CDN for video on demand in order to present live video with DVR.
Here are the steps you need to take to deliver live video with DVR through your Video Cloud players:
To deliver live streaming video with DVR to a Video Cloud player, you must enable your Video Cloud account for remote assets. Remote assets are disabled by default. Contact Brightcove Customer Support and ask to have your account enabled for remote assets. As well, read more about Video Cloud's remote assets feature in Creating Videos with Remote Video Files.
When you contact Brightcove Customer Support, tell them you are interested in streaming a live event using DVR. Customer Support will create Live HD with DVR stream settings for you and will send you the following information for your live stream:
|Primary Entrypoint||RTMP URL|
|Backup Entrypoint||RTMP URL|
|Username||user name for entrypoints|
|Password||password for entrypoints|
|Remote URL||URL for live stream|
Note: Credentials for Akamai HD are provisioned geographically based on your encoder IP. If you plan on having an event in a new location, you should provide Brightcove Support with an external and pingable IP address for the encoder at the new location. By doing so, Akamai can re-provision the entry point at the closest possible location to reduce latency and risk of interruption by travelling over as little of the public internet as possible. Brightcove Support needs to know this well in advance as the change takes some time to propagate within Akamai's network. If the encoder is not yet at the location, that is fine, so long as there is an externally pingable IP address on the network to use.
Choose and install hardware and software that enables you to capture live video while streaming it in real time to 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. It can also 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.
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 your encoding software to publish to the Live DVR stream entry point provided to you by Brightcove. For example, suppose you are using Adobe Flash Media Live Encoder (FMLE) and publishing a stream into Akamai. In your FMLE, set the FMS URL parameter to match the Primary Entrypoint URL value provided to you by Brightcove. It will look something like:
Setting the live stream parameters in FMLE
The Stream name should always be blank. The FMS URL and the remote-url are completely different values. The FMS URL is where the Adobe Flash Media Live Encoder pushes the stream data to the CDN and the remote-url is where the player pulls the video stream from the CDN.
When you initiate the connection, you will be prompted for a user name and password to authorize stream publishing. Enter the live stream credentials provided to you by Brightcove.
Note that you can reuse 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. When using live streaming with DVR, subsequent broadcasts will be appended to the end of the stream. If you wish to clear archived events from the stream, please contact Customer Support. Support can chop segments of a live stream and also permanently delete ranges of the broadcast.
The remote URL value will have the string [EVENT_ANGLE_BITRATE] embedded in it. You need to replace this part of the remote URL with values appropriate for your live stream. It should follow a specific naming convention prescribed by Akamai:
For example, you might have a [EVENT_ANGLE_BITRATE] string like this: BostonGardenDec2010_center_300k
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:
You can create a live stream video using the Media module. In the Media module:
For more detailed information, read Creating videos with remote assets using the Media module.
To create a video that represents your live stream using Video Cloud's FTP batch provisioning and remote assets features:
The XML manifest is a regular Video Cloud FTP batch provisioning manifest. Read about the FTP batch provisioning feature and about Creating videos with remote video files using FTP batch provisioning. The XML manifest must include a <remote-asset> element with the following attributes:
|refid||A reference ID for the stream. This reference ID will link the <remote-asset> element to the <title> element in the XML manifest.|
|remote-url||This is the Remote URL you received for the live stream from Brightcove customer support. Substitute your own event, angle, and bitrate values for the string [EVENT_ANGLE_BITRATE] in the middle of this URL.|
|video-codec||ON2 (use this setting even if you're actually using H.264)|
|controller-type||Must be set to AKAMAI_HD_LIVE.|
If you are creating multi-bitrate streams, the manifest must include a separate <remote-asset> element for each live stream rendition.
Your XML manifest also needs to include a <title> element. This element must include a flash-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 FTP Batch Provisioning: Reference for the XML manifest.
Here's an example of an XML manifest for a 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_300kbps" display-name="Live Video Asset - 300 kbps" type="VIDEO_FULL" remote-url="http://something.akamaihd.net/conference_angle1_300k@12345" remote-stream-name="" video-duration="-1" size="-1" video-codec="ON2" controller-type="AKAMAI_HD_LIVE" /> <title name="Title with Akamai Live HD and DVR Streaming" refid="Akamai-Live-HD-and-DVR" video-full-refid="
livevideoasset_300kbps" active="TRUE"> <short-description>Live streaming title with one rendition.</short-description> </title> </publisher-upload-manifest>
You can create multiple streams of the same live video source at different quality levels, and the player will select the rendition that best fits each viewer's bandwidth and player size. This works differently from Video Cloud's on-demand video rendition switching, as Akamai HD controls when the stream is switched.
If you are using Adobe Flash Media Live Encoder, simply enter the different URLs as you've set them up when creating the remote assets. The URLs should follow the pattern explained in Elements of the Remote URL in Configure the EntryPoint in your encoding software. Your FTP batch manifest for the live video will look like the following:
<?xml version="1.0" encoding="utf-8"?> <publisher-upload-manifest publisher-id="12345678" preparer="Robert Saint-Loup"> <notify email="firstname.lastname@example.org" /> <remote-asset refid="LIVE_320x240_150kbps" display-name="LIVE_320x240_150kbps - Remote Asset" type="VIDEO_FULL" video-duration="-1" video-codec="ON2" remote-url="http://something.akamaihd.net/conference_angle1_150k@12345" remote-stream-name="" controller-type="AKAMAI_HD_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="http://something.akamaihd.net/conference_angle1_300k@12345" remote-stream-name="" controller-type="AKAMAI_HD_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="http://something.akamaihd.net/conference_angle1_650k@12345" remote-stream-name="" controller-type="AKAMAI_HD_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>
A live video DVR stream acts much like an on-demand video in Video Cloud. You can see your live video listed 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 metadata for the live video and set video properties, like the name, tags, short description, schedule, and so forth.
When you view a live video in the Media module, its thumbnail in the details pane is labeled as LIVE VIDEO.
Live video in the Media module.
All Video Cloud player templates support live streams with DVR natively. When a Video Cloud player encounters a live video with DVR, it automatically switches into DVR mode. In this mode, there is a LIVE button which highlights the fact that the video playing back is Live:
Player with LIVE button.
By clicking on the progress line in the player controls, a viewer can go back to an earlier point in the live stream. By clicking the LIVE button, a viewer can return to the present point in the live stream.
Player in DVR mode, with playhead visible.
If the live stream ends when a viewer is watching, then the LIVE button will be hidden. Viewers can continue to watch the video and scrub backward and forward, until you deactivate the video or delete or chop the Live DVR stream archive.
You can mix live and on-demand videos in the same playlists or players and the player will handle the live video appropriately.
The live button is automatically present when a Live DVR stream is played back in a standard player or in a custom player that uses the VideoPlayer or ChromelessVideoPlayer BEML components. You can add a live button to the player controls of a custom player template, using the LiveButton BEML component. You can see an example of how to implement the LiveButton BEML component and read about it in the BEML DTD Reference.
Live video with DVR has the following known limitations:
If you need help getting your live event to work, Brightcove Support is available to help. You can submit a case here. To make sure you get the fastest response possible, below is a list of what support will need to solve the problem.