2016-12-16 227 views
1

使用ExoPlayer我試圖同時播放兩個音軌。
我的想法是創建兩個MediaSource,並使用MergingMediaSource在它們之間「結合」。
這是我做了什麼:ExoPlayer - 同時播放兩個音軌

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

任何想法?謝謝!

回答

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