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.

3 Solutions collect form web for “Android: varias pistas de audio en un VideoView?”

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.

  • Error de salida de Android ffmpeg
  • ¿Cómo quitar la pantalla negra que apper antes de jugar el vídeo mp4?
  • Envíe archivos grandes (de vídeo) desde Android a PHP Server
  • Cómo convertir vídeo para Android usando FFMPEG
  • Decodificación de vídeo con FFMpeg para Android
  • Crear video desde capturas de pantalla en android
  • Compatibilidad con FFmpeg para descodificación de hardware libstagefright
  • ¿Cómo puedo obtener la url correcta en el archivo de video de un video incrustado?
  • Decodificación de vídeo de Android Media Codec
  • SetPluginsEnabled no existe para WebView
  • Compartir URL de vídeo en streaming en android a través de ACTION_SEND
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.