Android : multiple audio tracks in a VideoView?

后端 未结 4 598
旧巷少年郎
旧巷少年郎 2021-02-02 08:52

I\'ve got some .MP4 video files that must be read in a VideoView in an Android activity. These videos include several audio tracks, with each one corresponding to a user languag

4条回答
  •  [愿得一人]
    2021-02-02 09:53

    No 3rd party library required:

    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;
        }
    });
    

    As far as I can tell - audio tracks should be encoded in the 3-letter ISO 639-2 in order to be recognized correctly.

提交回复
热议问题