2

我正在尝试连接三个视频网址并使用 Exoplayer ConcatenatingMediaSource播放。

我尝试了什么:

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 小时)

我的 secondSource 和 thirdSource 是视频广告(2 分钟)

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

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

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

我的问题

如何在主网址之间连接/播放两个视频网址?

任何人都帮帮我.. 超过 16 小时的头痛这个问题。

4

1 回答 1

4

最后我从官方github问题中得到了解决方案

https://github.com/google/ExoPlayer/issues/3299

解决方案是 - 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);
于 2017-09-27T07:48:00.977 回答