Downloads and offline playback series¶
Start asset download¶
Check download count¶
Before attempting to start a download, you should verify that the user has not reached their
limit om downloads for that asset. The maximum number of downloads as well as the current downloads
a user has made on an asset is available on the IDownloadableInfo
object mentioned in the previous
chapter.
public interface IDownloadableInfo {
...
int getDownloadCount();
int getMaxDownloadCount();
...
}
There is also a convenience method for easily checking if the download limit for the asset has been reached:
public interface IDownloadableInfo {
...
boolean isMaxDownloadCountReached();
...
}
If a DownloadStartRequest
is made when the max number of downloads for the asset has been reached,
a MaxDownloadCountLimitReachedError
will be raised.
DownloadStartRequest¶
To start an asset download, simply create a DownloadStartRequest
and call IEnigmaDownload#startAssetDownload
.
...
IEnigmaDownload enigmaDownload = new EnigmaDownload(businessUnit);
DownloadStartRequest downloadStartRequest = new DownloadStartRequest(assetId, session);
enigmaDownload.startAssetDownload(context, downloadStartRequest, new BaseDownloadStartResultHandler() {
@Override
public void onStarted() {
// Download was successfully started
}
@Override
public void onError(EnigmaError error) {
// Failed to start download
}
}, handler);
...
Download options¶
Before sending the DownloadStartRequest
to IEnigmaDownload#startAssetDownload
it can be modified
with a few options.
Selecting video track¶
To select which video track (bitrate) to download we can use DownloadStartRequest#setVideo(VideoDownloadable)
using a VideoDownloadable
retrieved from the IDownloadableInfo
object for the asset.
See Get available tracks for download for more details.
If setVideo
is never called or called with null
the SDK will select a suitable video track
automatically.
Example - Selecting a random video track¶
In the following example a video track (bitrate) is selected at random.
final IEnigmaDownload enigmaDownload = new EnigmaDownload(businessUnit);
enigmaDownload.getDownloadableInfo(assetID, session, new BaseResultHandler<IDownloadableInfo>() {
@Override
public void onResult(IDownloadableInfo result) {
Random random = new Random();
List<VideoDownloadable> videoTrackChoices = result.getVideoTracks();
VideoDownloadable videoDownloadable;
if(videoTrackChoices.isEmpty()) {
videoDownloadable = null;
} else {
int videoTrackIndex = random.nextInt(videoTrackChoices.size());
videoDownloadable = videoTrackChoices.get(videoTrackIndex);
}
DownloadStartRequest downloadStartRequest = new DownloadStartRequest(assetID, session);
downloadStartRequest.setVideo(videoDownloadable);
enigmaDownload.startAssetDownload(context, downloadStartRequest, new BaseDownloadStartResultHandler() {
@Override
public void onStarted() {
// ... download started! ... //
}
@Override
public void onError(EnigmaError error) {
// ... handle error ... //
}
}, handler);
}
@Override
public void onError(EnigmaError error) {
// ... handle error ...
}
}, handler);
Selecting audio tracks¶
To select which audio tracks to download we can use DownloadStartRequest#addAudio(AudioDownloadable)
or DownloadStartRequest#setAudios(List<AudioDownloadable>)
using AudioDownloadable
s retrieved
from the IDownloadableInfo
object for the asset.
See Get available tracks for download for more details.
If no audio tracks are selected the SDK will automatically select which audio tracks to download.
For an example of this in action, see Downloads app.
Selecting subtitle tracks¶
To select which subtitle tracks to download we can use DownloadStartRequest#addSubtitle(SubtitleDownloadable)
or DownloadStartRequest#setSubtitles(List<SubtitleDownloadable>)
using SubtitleDownloadable
s
retrieved from the IDownloadableInfo
object for the asset.
See Get available tracks for download for more details.
For an example of this in action, see Downloads app.
Advanced options¶
In Overriding media format selection logic you can read about how to provide custom media format selection logic (for example preference for DASH/HLS and with or without DRM) for playback and downloads.
Table of Contents
Prerequisites
Gradle dependencies
Check if an asset is downloadable
Using the download API
Get available tracks for download
• Start asset download (current)
Managing ongoing downloads
Listing downloaded assets
Start playback of a downloaded asset
Remove downloaded assets
Downloads app