使用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
。
有什么想法吗?谢谢!
答案 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()])));