Plusieurs pistes audio pour la lecture hors ligne avec le SDK natif pour Android

Dans cette rubrique, vous apprendrez comment renvoyer plusieurs pistes audio et texte lorsque vous travaillez avec la lecture hors ligne avec le SDK Brightcove Native Player pour Android.

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 :

  1. Obtenez une référence au Video Cloud Catalogue hors ligne client.

    private OfflineCatalog catalog;
    ...
    catalog = new OfflineCatalog(this, eventEmitter, ACCOUNT_ID, POLICY_KEY);
    ...
  2. 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)
  3. 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 :

  4. 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);
  5. 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();
  6. 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);
    }
  7. Met le filteredBundle à la MediaDownloadable objet.

    mediaDownloadable.setConfigurationBundle(filteredBundle);
  8. Téléchargez la vidéo.

    offlineCatalog.downloadVideo(video);

    En interne, le OfflineCatalog utilisera le cache MediaDownloadable fourni par le MediaDownloadable.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.