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
MediaFormatListener
ruft die folgende Methode auf:void onResult(MediaDownloadable mediaDownloadable, Bundle mediaFormatBundle);
Die MedienHerunterladbar -Objekt enthält Informationen, einschließlich Videowiedergaben, Audiosprachen und Bildunterschriften. Die
mediaDownloadable
Objekt 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
MediaFormat
Objekte - MedienHerunterladbar.AUDIO_LANGUAGES - Enthält eine Array-Liste von
MediaFormat
Objekte. - 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
MediaFormat
Objekte
- 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
filteredBundle
zumMediaDownloadable
Objekt.mediaDownloadable.setConfigurationBundle(filteredBundle);
-
Laden Sie das Video herunter.
offlineCatalog.downloadVideo(video);
Intern ist die
OfflineCatalog
wird das zwischengespeicherte verwendenMediaDownloadable
bereitgestellt von derMediaDownloadable.MediaFormatListener
zurückrufen.
Codebeispiel
Ein vollständiges Beispiel zum Herunterladen zusätzlicher Audiotracks und Untertiteldateien finden Sie im Beispiel-App für die Offline-Wiedergabe.