複数のトラックを管理する
デフォルトでは、キャプションファイルはなく、オーディオトラックは 1 つのみダウンロードされます。動画に関連付けられた追加のアセットをダウンロードするには、次の手順に従います。
-
ビデオクラウドの OfflineCatalog クライアントへの参照を取得します。
private OfflineCatalog catalog; ... catalog = new OfflineCatalog(this, eventEmitter, ACCOUNT_ID, POLICY_KEY); ...
-
GetMediaFormattrackSavailable メソッドを呼び出し、情報を取得する Video オブジェクトを渡し、返されたデータをリッスンする MediaFormatListener メソッドを呼び出します。
OfflineCatalog.getMediaFormatTracksAvailable( @NonNull final Video video, @NonNull final MediaDownloadable.MediaFormatListener mediaFormatListener)
-
は、
MediaFormatListener
次のメソッドを呼び出します。void onResult(MediaDownloadable mediaDownloadable, Bundle mediaFormatBundle);
MediaDownloadable オブジェクトには、ビデオレンディション、オーディオ言語、キャプションなどの情報が含まれます。
mediaDownloadable
オブジェクトはキャッシュされ、 OfflineCatalog.DownloadVideo (ビデオ) を呼び出すときに使用されます。バンドルオブジェクトには、利用可能な Media Format トラックに関する情報が含まれ、次のプロパティがあります。
- MediaDownloadable.video_Renditions -
MediaFormat
オブジェクトの配列リストが含まれています - MediaDownloadable.Audio_Languages -
MediaFormat
オブジェクトの配列リストが含まれます。 - MediaDownloadable.Audio_Language_Roles -文字列の配列リストが含まれます。このリストには、に関する追加情報が表示されます
MediaDownloadable.AUDIO_LANGUAGES
。インデックスはオーディオ言語リストと一致します。オーディオロールの例はメインと代替になります。 - MediaDownloadable.Captions -
MediaFormat
オブジェクトの配列リストが含まれています
- MediaDownloadable.video_Renditions -
-
バンドルからデータのリストを取得します。異なるリストを取得するための例を次に示します。
ArrayList<MediaFormat> video = bundle.getParcelableArrayList(MediaDownloadable.VIDEO_RENDITIONS); ArrayList<MediaFormat> audio = bundle.getParcelableArrayList(MediaDownloadable.AUDIO_LANGUAGES); ArrayList<String> roles = bundle.getStringArrayList(MediaDownloadable.AUDIO_LANGUAGE_ROLES); ArrayList<MediaFormat> captions = bundle.getParcelableArrayList(MediaDownloadable.CAPTIONS);
-
新しい
Bundle
(filteredBundle
)を作成して、ダウンロードに含めるオーディオトラックとクローズドキャプションを選択します。Bundle filteredBundle = new Bundle();
-
以前に作成したリストから目的のトラックをフィルタリングし、新しいトラックに追加します
filteredBundle
。ArrayList<MediaFormat> captions = bundle.getParcelableArrayList(MediaDownloadable.CAPTIONS); if (captions != null && captions.size() > 0) { ArrayList<MediaFormat> newCaptions = new ArrayList<>(); newCaptions.add(captions.get(0)); filteredBundle.putParcelableArrayList(MediaDownloadable.CAPTIONS, newCaptions); }
-
をセットする
filteredBundle
にMediaDownloadable
オブジェクト。mediaDownloadable.setConfigurationBundle(filteredBundle);
-
ビデオをダウンロードしてください。
offlineCatalog.downloadVideo(video);
内部的には、
OfflineCatalog
キャッシュされたものを使用しますMediaDownloadable
によって提供されるMediaDownloadable.MediaFormatListener
折り返し電話。
コードサンプル
追加のオーディオトラックとキャプションファイルをダウンロードする完全な例については、オフライン再生サンプルアプリを参照してください。