У меня есть несколько видеофайлов .MP4, которые необходимо прочитать в VideoView в действии Android. Эти видео включают в себя несколько звуковых дорожек, каждая из которых соответствует языку пользователя (например: английский, французский, японский ...).
У меня возникли неожиданные проблемы с поиском справки или документации, чтобы предоставить такую функцию. В настоящее время я могу загрузить видео и воспроизвести его в VideoView с помощью MediaController, но не могу изменять звуковые дорожки.
Я не уверен, что Android SDK предоставляет какой-либо простой способ сделать это, поэтому я совершенно не понимаю, как решить мою проблему. Я думал об извлечении каждой звуковой дорожки, загрузке звука, который я хочу, в MediaPlayer в зависимости от языка, а затем о совместном воспроизведении звука и видео. Но я боюсь, что могут возникнуть некоторые проблемы с синхронизацией, которые помешают мне сделать это.
Если у вас есть какие-либо подсказки, любые советы, которые помогут мне начать работу с этой проблемой, добро пожаловать.
Библиотека сторонних производителей не требуется:
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;
}
});
Насколько я могу судить - аудиодорожки должны быть закодированы в трехбуквенном стандарте ISO 639-2 для правильного распознавания.