Mehrere Audiospuren für die Offline-Wiedergabe mit dem nativen SDK für Android

In diesem Thema erfahren Sie, wie Sie bei der Offline-Wiedergabe mit dem Brightcove Native Player SDK für Android mehrere Audio- und Textspuren zurückgeben können.

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:

  1. Erhalten Sie einen Verweis auf die Video Cloud OfflineKatalog Klient.

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

  4. 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);
  5. 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();
  6. 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);
    }
  7. Stellen Sie die filteredBundle zum MediaDownloadable Objekt.

    mediaDownloadable.setConfigurationBundle(filteredBundle);
  8. Laden Sie das Video herunter.

    offlineCatalog.downloadVideo(video);

    Intern ist die OfflineCatalog wird das zwischengespeicherte verwenden MediaDownloadable bereitgestellt von der MediaDownloadable.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.