Using offline playback, users can download both DRM-protected and clear (non-encrypted) video content to their devices and watch it when they are not connected.

To use this feature, you need to be a Video Cloud customer using Dynamic Delivery.

Supported versions

The Brightcove Native Player SDKs support offline playback with the following versions:

Device OS version

iOS 10.0+, but 10.3+ is recommended

Android 5.0+

Brightcove Native SDK version

Native SDK for iOS 6.0.1+

Native SDK for Android 5.0.3+

Content delivery

Streaming video takes advantage of Video Cloud's multi-bitrate streaming feature which detects bandwidth at the source and delivers the best quality for the device. The offline playback feature supports the following streaming types:

Android: Dynamic Adaptive Streaming over HTTP (DASH)

iOS: Apple HTTP Live Streaming (HLS)

Security

The protection of downloaded content is top-of-mind with our Offline solution. The Brightcove Native Player SDKs provide the following functionality to ensure your content is stored safely on viewers' devices:

DRM-protected content

For DRM-protected content, the Native SDKs use the following technologies:

Show local storage space

Inform the user when there is not enough local storage to complete downloading the current item and any items in the queue.

The SDKs provide the estimated size and progress so that you can determine if there is sufficient space for downloads.

Show download status

Display the current download along with its status.

Total estimated size, current download status and percent of downloading progress information will be returned by the SDKs.

For Android devices, download status is also shown in the Notification Area. The notification title is set to the video title. The notification is removed if the download is paused or cancelled. For details, see the Code Snippets using the Native SDK for Android document.

Manage the download queue

Create and manage the download queue.

The Native SDKs will allow multiple videos to be queued for downloads. For example, a user can download multiple episodes of a season and the Native SDKs will manage the process by providing download status for each asset.

If your app is targeting iOS 11.0 - 11.2, we don't recommend concurrent downloads because pause and resume behavior is unreliable with multiple simultaneous downloads. The problem has been fixed with iOS 11.3.

Pause/resume/cancel download

Allow the user to pause, resume or cancel content download.

Download functionality will resume where it left off if the user pauses/resumes or if the download is interrupted. For example, it you lose Wi-Fi connection during download, it will resume where it left off when you are reconnected.

If you cancel a video download, then any progress made will be erased.

Local catalog management

The Brightcove Native Player SDKs simplify the process of managing downloaded local content.

The following functionality can be added to your apps to support local catalog management:

Android

App deletion: When the app is deleted, all downloaded content is removed. This is true as long as the default storage location is not overridden.

iOS

AirPlay: As a security feature, you cannot stream an offline HLS video to an AirPlay device for playback. This is confirmed by Apple to be an AVFoundation limitation.

FAQ

Below you will find answers to some general questions.

DRM-protected content

Can the user change the system clock to bypass the expiration date?

Android: Absolute expiration determines the date and time until which a license is valid. This is enforced by Widevine and the Android DRM layer. Theoretically, the DRM layer in Android must prevent the user from bypassing the expiration period. Any issues that we may have found is described in the Android OS release notes.

iOS: License expiration is enforced by FairPlay. iOS handles all checking for clock changes, etc. An app has the option of checking the license expiration to alert the user that the license has expired. This may be preferable to simply playing back an expired video and then receiving a playback error.

Will the license and offline videos continue loading while the app is in the background?

Android: Yes. Typically, the license is downloaded immediately, but even the license can be downloaded while the app is backgrounded.

iOS: License loading should happen in the foreground. We have a method to preload the license. Downloading of the main video content can happen while the app is in the background.

All content

What is the video format used for downloading offline content?

Android: DRM-protected DASH or non-encrypted DASH.

iOS: HLS steaming. You can specify a bitrate for the download to use a specific variant.

Will downloaded videos playback locally or streaming when the user is online?

A downloaded video can be played back while online or offline, but it will always use the downloaded video. If you choose to play back an online version of the video, you should retrieve a new video object from the Playback Service. The offline video can only be played from local storage.

Best practices

The following guidelines should help when developing your app for offline playback.

Displaying pause/cancel buttons

The pause and cancel buttons should be displayed when video download has started.

Android: You should display the pause and cancel buttons as part of calling the onDownloadStarted callback in the DownloadEventListener. For details, see the Offline Playback sample app.

Displaying clear content

If your account is not DRM-enabled or you are working with clear content, the Brightcove Native SDKs will not perform a server-side license request. Therefore, clear content is not considered available for rental or purchase. In most cases, for clear content, it is recommended that you hide the rent and buy buttons and display a single download button instead.

Enabling the feature

Contact your account manager to learn about pricing and to enable the Offline Playback feature for your account.

Known issues

For a list of known issues for the Android and iOS operating systems that affect Offline Playback with the Native SDKs, see the Known Issues support document.