Gérer plusieurs pistes
Par défaut, aucun fichier de sous-titres et une seule piste audio sont téléchargés. Pour télécharger des éléments supplémentaires associés à la vidéo, procédez comme suit :
-
Obtenez une référence au Video Cloud Catalogue hors ligne client.
private OfflineCatalog catalog; ... catalog = new OfflineCatalog(this, eventEmitter, ACCOUNT_ID, POLICY_KEY); ...
-
Appeler le getMediaFormatTracksDisponible méthode, en passant par le Vidéo l'objet pour lequel vous souhaitez obtenir des informations, et le MediaFormatListener pour écouter les données renvoyées.
OfflineCatalog.getMediaFormatTracksAvailable( @NonNull final Video video, @NonNull final MediaDownloadable.MediaFormatListener mediaFormatListener)
-
MediaFormatListener
Appelle la méthode suivante :void onResult(MediaDownloadable mediaDownloadable, Bundle mediaFormatBundle);
Les MédiaTéléchargeable L'objet contient des informations, notamment des rendus vidéo, des langues audio et des sous-titres. Les
mediaDownloadable
l'objet est mis en cache et utilisé lorsque vous appelez OfflineCatalog.downloadVideo (Vidéo).Les Empaqueter L'objet contient des informations sur les pistes de format multimédia disponibles et possède les propriétés suivantes :
- MediaDownloadable.VIDEO_Renditions - Contient une liste d'
MediaFormat
objets sous forme de tableau - MediaDownloadable.AUDIO_LANGUAGES - Contient une liste d'
MediaFormat
objets sous forme de tableau. - MediaDownloadable.AUDIO_LANGUAGE_ROLES - Contient une liste de chaînes sous forme de tableau. Cette liste fournit des informations supplémentaires sur les
MediaDownloadable.AUDIO_LANGUAGES
. Les index correspondent à la liste des langues audio. L'exemple de rôles audio peut être principal et alternatif. - MediaDownloadable.captions - Contient une liste d'
MediaFormat
objets sous forme de tableau
- MediaDownloadable.VIDEO_Renditions - Contient une liste d'
-
Récupérez les listes de données du bundle. Voici des exemples pour récupérer les différentes listes :
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);
-
Créez un nouveau
Bundle
(filteredBundle
) pour sélectionner les pistes audio et les sous-titres codés que vous souhaitez inclure dans le téléchargement.Bundle filteredBundle = new Bundle();
-
Filtrez les pistes que vous voulez dans la liste que vous avez créée précédemment et ajoutez-la à la nouvelle
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); }
-
Met le
filteredBundle
à laMediaDownloadable
objet.mediaDownloadable.setConfigurationBundle(filteredBundle);
-
Téléchargez la vidéo.
offlineCatalog.downloadVideo(video);
En interne, le
OfflineCatalog
utilisera le cacheMediaDownloadable
fourni par leMediaDownloadable.MediaFormatListener
rappeler.
Exemple de code
Pour un exemple complet de téléchargement de pistes audio et de fichiers de sous-titres supplémentaires, consultez le Exemple d'application de lecture hors ligne.