es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener una lista de las pistas disponibles en un video usando ExoPlayer sin reproducción, puedes usar la clase MetadataRetriever.

    Aquí hay un ejemplo de código que puedes usar:

    MediaItem mediaItem = MediaItem.fromUri(videoUrl);
    
    ListenableFuture<trackgrouparray> trackGroupsFuture = MetadataRetriever.retrieveMetadata(this, mediaItem);
    Futures.addCallback(trackGroupsFuture, new FutureCallback<trackgrouparray>() {
        @Override
        public void onSuccess(TrackGroupArray trackGroups) {
            for (int i = 0; i < trackGroups.length; i++) {
                String format = trackGroups.get(i).getFormat(0).sampleMimeType;
                String lang = trackGroups.get(i).getFormat(0).language;
                String id = trackGroups.get(i).getFormat(0).id;
    
                if (format.contains("audio") && id != null && lang != null) {
                    // Log the track information
                    Log.d(TAG, "Información de la pista de audio - Idioma: " + lang + ", ID: " + id);
                } else if (format.contains("subtitle") && lang != null) {
                    // Log the subtitle information
                    Log.d(TAG, "Información de la pista de subtítulos - Idioma: " + lang);
                }
            }
        }
    
        @Override
        public void onFailure(Throwable t) {
            // Handle failure
            Log.d(TAG, "onFailure: " + t);
        }
    }, executor);
    

    En este fragmento de código, primero creamos un objeto MediaItem desde el videoUrl. Luego, usamos la clase MetadataRetriever para obtener los metadatos del archivo de video. Agregamos una devolución de llamada al objeto ListenableFuture que se llamará cuando se hayan recuperado los metadatos con éxito o si hay un error.

    En el método onSuccess(), iteramos sobre TrackGroupArray y registramos la información para cada pista de audio y subtítulos. Verificamos el formato, el idioma y el ID de la pista para asegurarnos de que no sean nulos antes de registrar la información.

    Puedes pasar la dirección URL del video de muestra https://storage.googleapis.com/jlplayer/Dolittle.mkv` al métodoMediaItem.fromUri()` para obtener sus metadatos. Una vez que ejecutes el código, deberías ver registros de las pistas de audio y subtítulos disponibles en el video.

Comments are closed.