Varias pistas de audio para reproducción sin conexión con el SDK nativo para Android

En este tema, aprenderá a devolver varias pistas de audio y texto al trabajar con la reproducción sin conexión con Brightcove Native Player SDK para Android.

Administrar múltiples pistas

De forma predeterminada, no se descargan archivos de subtítulos y solo se descarga una pista de audio. Para descargar recursos adicionales asociados con el video, siga estos pasos:

  1. Obtenga una referencia a Video Cloud OfflineCatalog cliente.

    private OfflineCatalog catalog;
    ...
    catalog = new OfflineCatalog(this, eventEmitter, ACCOUNT_ID, POLICY_KEY);
    ...
  2. Llama a getMediaFormatTracksAvailable método, pasando en el Video objeto sobre el que desea obtener información, y el MediaFormatListener para escuchar los datos devueltos.

    OfflineCatalog.getMediaFormatTracksAvailable(
      @NonNull final Video video,
      @NonNull final MediaDownloadable.MediaFormatListener mediaFormatListener)
  3. La MediaFormatListener llama al siguiente método:

    void onResult(MediaDownloadable mediaDownloadable, Bundle mediaFormatBundle);

    La Medios descargables El objeto contiene información, incluidas las interpretaciones de video, los idiomas de audio y los subtítulos. La mediaDownloadable el objeto se almacena en caché y se usa cuando llamas OfflineCatalog.downloadVideo (Video).

    La Manojo El objeto contiene información sobre las pistas de formato de medios disponibles y tiene las siguientes propiedades:

  4. Recupere listas de datos del paquete. A continuación, se muestran ejemplos para recuperar las diferentes listas:

    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. Crear un nuevo Bundle (filteredBundle ) para seleccionar las pistas de audio y los subtítulos que desea incluir en la descarga.

    Bundle filteredBundle = new Bundle();
  6. Filtre las pistas que desee de la lista que creó anteriormente y agréguelas a la nueva 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. Selecciona el filteredBundle hacia MediaDownloadable objeto.

    mediaDownloadable.setConfigurationBundle(filteredBundle);
  8. Descarga el video.

    offlineCatalog.downloadVideo(video);

    Internamente, el OfflineCatalog usará el caché MediaDownloadable proporcionado por el MediaDownloadable.MediaFormatListener llamar de vuelta.

Muestra de código

Para obtener un ejemplo completo de cómo descargar pistas de audio y archivos de subtítulos adicionales, consulte la Aplicación de muestra de reproducción sin conexión.