ExoPlayer - 同时播放两个音轨

时间:2016-12-16 16:12:15

标签: android exoplayer

使用ExoPlayer我试图同时播放两个音轨 我的想法是创建两个MediaSource,以及"结合"他们之间使用MergingMediaSource 这就是我所做的:

    Uri uriAudio1 = Uri.parse(AUDIO_URL_1);
    Uri uriAudio2 = Uri.parse(AUDIO_URL_2);

    MediaSource audioSource1  = new ExtractorMediaSource(uriAudio1, dataSourceFactory, extractorsFactory, mainHandler, null);
    MediaSource audioSource2  = new ExtractorMediaSource(uriAudio2, dataSourceFactory, extractorsFactory, mainHandler, null);


    MergingMediaSource mergedAudioSource = new MergingMediaSource(audioSource1, audioSource2);


    mPlayer.prepare(mergedAudioSource);

如果不是并行听到两个音轨,我只听到第一个audioSource1

有什么想法吗?谢谢!

3 个答案:

答案 0 :(得分:0)

目前似乎不支持此功能,according to issue #2200

答案 1 :(得分:0)

尝试这样设置频道计数

val trackSelector = DefaultTrackSelector()
trackSelector.setParameters(
                trackSelector.buildUponParameters()
                .setMaxVideoSizeSd()
                .setMaxAudioChannelCount(2)
            )

答案 2 :(得分:-1)

您可以使用ConcatenatingMediaSource:

  List<MediaSource> mediaSources = new ArrayList<>();
                    for (Track track : tracks) {
                        MediaSource mediaSource = ...//use your uri media source from tack.getPath
                        mediaSources.add(mediaSource);
                    }
                    mediaPlayer.prepare(new ConcatenatingMediaSource(mediaSources.toArray(new MediaSource[mediaSources.size()])));