Android: несколько звуковых дорожек в VideoView?

У меня есть несколько видеофайлов .MP4, которые необходимо прочитать в VideoView в действии Android. Эти видео включают в себя несколько звуковых дорожек, каждая из которых соответствует языку пользователя (например: английский, французский, японский ...).
У меня возникли неожиданные проблемы с поиском справки или документации, чтобы предоставить такую ​​функцию. В настоящее время я могу загрузить видео и воспроизвести его в VideoView с помощью MediaController, но не могу изменять звуковые дорожки.

Я не уверен, что Android SDK предоставляет какой-либо простой способ сделать это, поэтому я совершенно не понимаю, как решить мою проблему. Я думал об извлечении каждой звуковой дорожки, загрузке звука, который я хочу, в MediaPlayer в зависимости от языка, а затем о совместном воспроизведении звука и видео. Но я боюсь, что могут возникнуть некоторые проблемы с синхронизацией, которые помешают мне сделать это.

Если у вас есть какие-либо подсказки, любые советы, которые помогут мне начать работу с этой проблемой, добро пожаловать.

28
задан Vahron 9 January 2012 в 13:58
поделиться

1 ответ

Библиотека сторонних производителей не требуется:

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 для правильного распознавания.

4
ответ дан 28 November 2019 в 03:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: