android ExoPlayer -同时播放两个音轨

bqujaahr  于 2023-01-15  发布在  Android
关注(0)|答案(4)|浏览(230)

使用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
有什么主意吗?谢谢!

siv3szwd

siv3szwd1#

尝试如下设置通道计数

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

ojsjcaue2#

根据问题#2200,此功能目前似乎不受支持。

js81xvg6

js81xvg63#

我遇到了同样的问题,通过使用ExoPlayer的两个不同示例(每个音频资产一个)并同时播放它们来解决。

toiithl6

toiithl64#

您可以使用连接媒体源:

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()])));

相关问题