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) -
MediaFormatListenerAppelle 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
mediaDownloadablel'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'
MediaFormatobjets sous forme de tableau - MediaDownloadable.AUDIO_LANGUAGES - Contient une liste d'
MediaFormatobjets 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'
MediaFormatobjets 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à laMediaDownloadableobjet.mediaDownloadable.setConfigurationBundle(filteredBundle); -
Téléchargez la vidéo.
offlineCatalog.downloadVideo(video);En interne, le
OfflineCatalogutilisera le cacheMediaDownloadablefourni par leMediaDownloadable.MediaFormatListenerrappeler.
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.