Android Exoplayer-在主URL之间连接MediaSource

Android Exoplayer-在主URL之间连接MediaSource,android,exoplayer,exoplayer2.x,Android,Exoplayer,Exoplayer2.x,我正在尝试连接三个视频URL并使用Exoplayer连接MediaSource播放 我所尝试的: MediaSource mainSource = new ExtractorMediaSource(firstVideoUri, ...); MediaSource secondSource = new ExtractorMediaSource(secondVideoUri, ...); MediaSource thirdSource = new ExtractorMediaSource(third

我正在尝试连接三个视频URL并使用Exoplayer连接MediaSource播放

我所尝试的:

MediaSource mainSource = new ExtractorMediaSource(firstVideoUri, ...);
MediaSource secondSource = new ExtractorMediaSource(secondVideoUri, ...);
MediaSource thirdSource = new ExtractorMediaSource(thirdVideoUri, ...);
// Plays the first video, then second & third video.
ConcatenatingMediaSource concatenatedSource =
    new ConcatenatingMediaSource(mainSource, secondSource, thirdSource);
这一个适用于序列视频播放

我的问题

我的主要来源是电影(约2小时)

我的第二个来源和第三个来源是视频广告(2分钟)

我需要在电影播放30分钟后播放第一个视频广告。 需要播放60分钟后的第二个视频广告

我需要按以下顺序播放3个视频

主电影(前30分钟)->2分钟第一个广告-->主电影(31-60分钟)->2分钟第二个广告-->主电影(61-结束)

我的问题

   MediaSource movieMediaSource = MyExoPlayer.getMediaSourceFromUrl(StreamPlayerActivity.this, mLiveURL);
    long oneMinute =  1000 * 1000 * 60 ;
    ClippingMediaSource videoSource1 = new ClippingMediaSource(movieMediaSource, 0,  oneMinute,false);
    ClippingMediaSource videoSource2 = new ClippingMediaSource(movieMediaSource,  oneMinute, 2 * oneMinute,false);
    ClippingMediaSource videoSource3 = new ClippingMediaSource(movieMediaSource, 2 * oneMinute, 10 * oneMinute,false);

    MediaSource adVideoSource1 = MyExoPlayer.getMediaSourceFromUrl(StreamPlayerActivity.this, mPromoVideoURL1);
    MediaSource adVideoSource2 = MyExoPlayer.getMediaSourceFromUrl(StreamPlayerActivity.this, mPromoVideoURL2);
    ConcatenatingMediaSource concatenatingMediaSource = new ConcatenatingMediaSource(videoSource1, adVideoSource1, videoSource2, adVideoSource2, videoSource3);
如何在主url之间连接/播放两个视频url


有人帮我吗。。这个问题让我头痛了16个多小时

我终于从官方的github问题中得到了解决方案

解决方案是-ClippingMediaSource

示例实现

   MediaSource movieMediaSource = MyExoPlayer.getMediaSourceFromUrl(StreamPlayerActivity.this, mLiveURL);
    long oneMinute =  1000 * 1000 * 60 ;
    ClippingMediaSource videoSource1 = new ClippingMediaSource(movieMediaSource, 0,  oneMinute,false);
    ClippingMediaSource videoSource2 = new ClippingMediaSource(movieMediaSource,  oneMinute, 2 * oneMinute,false);
    ClippingMediaSource videoSource3 = new ClippingMediaSource(movieMediaSource, 2 * oneMinute, 10 * oneMinute,false);

    MediaSource adVideoSource1 = MyExoPlayer.getMediaSourceFromUrl(StreamPlayerActivity.this, mPromoVideoURL1);
    MediaSource adVideoSource2 = MyExoPlayer.getMediaSourceFromUrl(StreamPlayerActivity.this, mPromoVideoURL2);
    ConcatenatingMediaSource concatenatingMediaSource = new ConcatenatingMediaSource(videoSource1, adVideoSource1, videoSource2, adVideoSource2, videoSource3);