ExoPlayer: obtiene las canciones metadata de la secuencia HTTP

Yo uso el siguiente código para reproducir un vapor de música de ExaPlayer:

exoPlayer = ExoPlayer.Factory.newInstance(numRenderers, minBufSize, maxBufSize); String url = Helper.getPr().getString("url", "http://mp3.nashe.ru:80/ultra-128.mp3"); Uri uri = Uri.parse(url); Log.i(TAG, "Going to open " + url); Allocator allocator = new DefaultAllocator(BUFFER_SEGMENT_SIZE); DataSource dataSource = new DefaultUriDataSource(getApplicationContext(), USER_AGENT); ExtractorSampleSource sampleSource = new ExtractorSampleSource(uri, dataSource, allocator, BUFFER_SEGMENT_COUNT * BUFFER_SEGMENT_SIZE); audioRenderer = new MediaCodecAudioTrackRenderer(sampleSource); exoPlayer.addListener(this); exoPlayer.sendMessage(audioRenderer, MediaCodecAudioTrackRenderer.MSG_SET_VOLUME, volume); exoPlayer.prepare(audioRenderer); exoPlayer.setPlayWhenReady(true); 

Pero no puedo encontrar ninguna información sobre cómo obtener metadatos como artista y el nombre de la canción actual .. ¿Es posible obtener esa información?
Muchas gracias.

Hay muchos tipos de metadatos en muchos tipos de medios, depende de su flujo. Pero actualmente Exoplayer, sólo analiza los metadatos de los flujos HLS (HTTP Live Streaming) obtienen datos ID3 del flujo.

Como se puede ver en el problema del repositorio github, este es el estado actual de los metadatos en Exoplayer lib (agosto de 2015): https://github.com/google/ExoPlayer/issues/704

Si es tu caso de flujo, te recomiendo que descargue la demo de Exoplayer en github ( https://github.com/google/ExoPlayer/tree/master/demo ). Uno de los ejemplos de la demostración muestra los metadatos ID3 en LogCat.

Si no es tu caso, nada te ayudará en ExoPlayer lib ahora mismo.

Pero hay una solución alternativa, que he utilizado para una aplicación de stream de radio, y funciona bien:

IcyStreamMeta para obtener los metadatos de la radio en línea:

Obtención de metadatos de SHOUTcast utilizando IcyStreamMeta

Pero no seguro que trabajará con el archivo mp3 simple.

Probablemente deberías usar MediaMetadataRetriever

 MediaMetadataRetriever mmr = new MediaMetadataRetriever(); mmr.setDataSource(getActivity(), uri); String artist = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST); 

Usted podría utilizar el código de seguimiento para hacer eso (tal vez debería descargar el archivo mp3 primero):

 MediaMetadataRetriever metaRetriver = new MediaMetadataRetriever(); metaRetriver.setDataSource("LOCAL MP3 FILE PATH"); byte[] picArray = metaRetriver.getEmbeddedPicture(); Bitmap songImage = BitmapFactory .decodeByteArray(picArray, 0, picArray.length); String albumName = metaRetriver .extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM); String artistName = metaRetriver .extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST); String songGenre = metaRetriver .extractMetadata(MediaMetadataRetriever.METADATA_KEY_GENRE)); 

Fuente: http://mrbool.com/how-to-extract-meta-data-from-media-file-in-android/28130#ixzz3s8PUd9E7

  • ExoPlayer - reproduce 10 archivos uno tras otro
  • ¿Es posible precargar múltiples secuencias con Exoplayer y reproducir varios videos simultáneamente?
  • ExoPlayer y comandos start / pause / seekTo
  • ¿Cómo escuchar mp3 url usando exoplayer?
  • Exoplayer - InvalidResponseCodeException (404) mientras el archivo existe
  • Caché ExoPlayer
  • En Android, usando exoplayer, ¿cómo rellenar surfaceview con un video que no tiene la misma relación de aspecto con el dispositivo?
  • Exoplayer: ¿Cómo reproducir audio a través de auriculares?
  • Exo player DASH Ejemplo de streaming
  • Reproducción de vídeo cifrado con ExoPlayer
  • Reproducción de HLS con ExoPlayer
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.