Mehrere Tracks verwalten
Standardmäßig werden keine Untertiteldateien und nur eine Audiospur heruntergeladen. Gehen Sie wie folgt vor, um zusätzliche mit dem Video verknüpfte Assets herunterzuladen:
-
Erhalten Sie einen Verweis auf die Video Cloud OfflineKatalog Klient.
private OfflineCatalog catalog; ... catalog = new OfflineCatalog(this, eventEmitter, ACCOUNT_ID, POLICY_KEY); ... -
Ruf die getMediaFormatTracksAvailable Methode, Übergabe in der Video Objekt, über das Sie Informationen erhalten möchten, und die MediaFormatListener auf die zurückgegebenen Daten zu hören.
OfflineCatalog.getMediaFormatTracksAvailable( @NonNull final Video video, @NonNull final MediaDownloadable.MediaFormatListener mediaFormatListener) -
Die
MediaFormatListenerruft die folgende Methode auf:void onResult(MediaDownloadable mediaDownloadable, Bundle mediaFormatBundle);Die MedienHerunterladbar -Objekt enthält Informationen, einschließlich Videowiedergaben, Audiosprachen und Bildunterschriften. Die
mediaDownloadableObjekt wird zwischengespeichert und verwendet, wenn Sie aufrufen OfflineCatalog.downloadVideo(Video).Die Bündeln -Objekt enthält Informationen zu den verfügbaren Medienformat-Tracks und hat die folgenden Eigenschaften:
- MedienHerunterladbar.VIDEO_RENDITIONS - Enthält eine Array-Liste von
MediaFormatObjekte - MedienHerunterladbar.AUDIO_LANGUAGES - Enthält eine Array-Liste von
MediaFormatObjekte. - MedienHerunterladbar.AUDIO_LANGUAGE_ROLES - Enthält eine Array-Liste von Strings. Diese Liste enthält zusätzliche Informationen bezüglich der
MediaDownloadable.AUDIO_LANGUAGES. Die Indizes stimmen mit der Liste der Audiosprachen überein. Beispiele für Audiorollen können Haupt- und Alternativrollen sein. - MedienHerunterladbar.CAPTIONS - Enthält eine Array-Liste von
MediaFormatObjekte
- MedienHerunterladbar.VIDEO_RENDITIONS - Enthält eine Array-Liste von
-
Rufen Sie Datenlisten aus dem Bundle ab. Hier sind Beispiele zum Abrufen der verschiedenen Listen:
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); -
Erstelle eine neue
Bundle(filteredBundle), um die Audiotracks und Untertitel auszuwählen, die Sie in den Download einschließen möchten.Bundle filteredBundle = new Bundle(); -
Filtern Sie die gewünschten Tracks aus der Liste, die Sie zuvor erstellt haben, und fügen Sie sie der neuen hinzu
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); } -
Stellen Sie die
filteredBundlezumMediaDownloadableObjekt.mediaDownloadable.setConfigurationBundle(filteredBundle); -
Laden Sie das Video herunter.
offlineCatalog.downloadVideo(video);Intern ist die
OfflineCatalogwird das zwischengespeicherte verwendenMediaDownloadablebereitgestellt von derMediaDownloadable.MediaFormatListenerzurückrufen.
Codebeispiel
Ein vollständiges Beispiel zum Herunterladen zusätzlicher Audiotracks und Untertiteldateien finden Sie im Beispiel-App für die Offline-Wiedergabe.