Android: varias pistas de audio en un VideoView?

Tengo algunos archivos de video .MP4 que deben ser leídos en un VideoView en una actividad de Android. Estos videos incluyen varias pistas de audio, cada una de las cuales corresponde a un idioma de usuario (por ejemplo: inglés, francés, japonés …).
Tengo problemas inesperados para encontrar cualquier ayuda o documentación para proporcionar tal característica. Actualmente puedo cargar el video y reproducirlo en un VideoView con un MediaController, pero no para cambiar las pistas de audio.

No estoy seguro de que el SDK de Android proporcione una forma sencilla de hacer esto, lo que me deja muy despistado sobre cómo resolver mi problema. Estaba pensando en extraer cada pista de audio, cargar el audio que quiero en un MediaPlayer dependiendo del idioma, y ​​luego hacer que el audio y el video jueguen juntos. Pero me temo que algunos problemas de sincronización podrían surgir y me impiden hacer esto.

Si tienes alguna pista, cualquier consejo para ayudarme a empezar con este problema, eres más que bienvenido.

No me he probado todavía, pero parece que la biblioteca de Vitamio tiene soporte para múltiples pistas de audio (entre otras características interesantes). Es compatible con API con la clase VideoView de Android.

Probablemente tendrías que usar Vitamio VideoView.setAudioTrack() para establecer la pista de audio (por ejemplo, basada en la configuración regional). Consulte los documentos de la API de Vitamio para obtener más detalles.

No requiere biblioteca de terceros:

 mVideoView.setVideoURI(Uri.parse("")); // set video source mVideoView.setOnInfoListener(new MediaPlayer.OnInfoListener() { @Override public boolean onInfo(MediaPlayer mp, int what, int extra) { MediaPlayer.TrackInfo[] trackInfoArray = mp.getTrackInfo(); for (int i = 0; i < trackInfoArray.length; i++) { // you can switch out the language comparison logic to whatever works for you if (trackInfoArray[i].getTrackType() == MediaPlayer.TrackInfo.MEDIA_TRACK_TYPE_AUDIO && trackInfoArray[i].getLanguage().equals(Locale.getDefault().getISO3Language()) { mp.selectTrack(i); break; } } return true; } }); 

Por lo que puedo decir – pistas de audio deben ser codificados en la ISO de 3 letras ISO 639-2 para ser reconocidos correctamente.

La clase VideoView no puede soportar su require.U debe analizar para obtener datos de flujo de audio (desea) para jugar con la clase AudioTrack en la capa java.

  • Transcode / Convert Video to Mp4 en Android
  • Cómo seleccionar CBR vs VBR a través de la API de Android mientras graba vídeo en una aplicación
  • El video de YouTube no se abre en webView
  • Grabación de video en un buffer circular en Android
  • ¿Cómo concat o fusionar dos o más archivos de video en Android?
  • ¿Podemos volver a escribir la API de MediaCodec en C?
  • cómo encubrir las imágenes de vídeo en android
  • Android: Cómo compartir vídeos en la página de Facebook con Facebook SDK
  • Cómo implementar el filtro de vídeo en Android como instagram
  • Codificación de vídeo para admitir varias pantallas
  • Recortar un video de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.