【问题标题】:Android : multiple audio tracks in a VideoView?Android:VideoView 中有多个音轨?
【发布时间】:2012-02-06 01:16:46
【问题描述】:

我有一些 .MP4 视频文件必须在 Android 活动的 VideoView 中读取。这些视频包含多个音轨,每个音轨对应一种用户语言(例如:英语、法语、日语...)。
我在寻找任何帮助或文档来提供此类功能时遇到了意外的麻烦。我目前能够加载视频并使用 MediaController 在 VideoView 中播放它,但不能更改音轨。

我不确定 Android SDK 是否提供任何简单的方法来做到这一点,这让我对如何解决我的问题一无所知。我正在考虑提取每个音轨,根据语言将我想要的音频加载到 MediaPlayer 中,然后让音频和视频一起播放。但我担心可能会出现一些同步问题并阻止我这样做。

如果您有任何线索,任何可以帮助我解决这个问题的建议,我们非常欢迎您。

【问题讨论】:

  • 根据所选解决方案的评论,您似乎取得了进展。您能分享一下您是如何完成上述任务的吗?
  • 这是一个老问题,但有一个简单的解决方案。看我的回答。

标签: android audio video


【解决方案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;
    }
});

据我所知 - 音轨应使用 3 个字母的 ISO 639-2 编码,以便正确识别。

【讨论】:

【解决方案2】:

我还没有测试过自己,但似乎Vitamio 库支持多个音轨(以及其他有趣的功能)。它与 Android 的 VideoView 类 API 兼容。

您可能必须使用 Vitamio VideoView.setAudioTrack() 来设置音轨(例如基于区域设置)。详情请见Vitamio API docs

【讨论】:

  • 最后我完全按照我的建议做了。我分离了视频和音频数据,根据用户语言将音频加载到 MediaPlayer,然后同步两个流。这是一个相当肮脏的解决方案,但在我不得不做这项工作的时候是可以接受的。我没有测试你的解决方案,但我会接受它,因为它似乎完全符合我当时的需要。还是谢谢你!
【解决方案3】:

现在您可以通过 ExoPlayer 播放多个音轨。

这里是详细信息,

  1. https://exoplayer.dev/track-selection.html
  2. Exo Player Track Selection

【讨论】:

    【解决方案4】:

    VideoView 类不支持您的要求。U 必须解析以获取音频流数据(您想要)以在 java 层上使用 AudioTrack 类播放。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-10
      • 1970-01-01
      • 2020-08-10
      • 1970-01-01
      • 1970-01-01
      • 2011-10-07
      • 2011-12-14
      • 2019-11-07
      相关资源
      最近更新 更多