複数のトラックを管理する
デフォルトでは、キャプションファイルはなく、オーディオトラックは 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折り返し電話。
コードサンプル
追加のオーディオトラックとキャプションファイルをダウンロードする完全な例については、オフライン再生サンプルアプリを参照してください。