Exoplayer - 主 URL 之间的 ConcatenatingMediaSource
Exoplayer - ConcatenatingMediaSource between main URL
我正在尝试连接三个视频 url 并使用 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 小时)
我的第二个来源和第三个来源是视频广告(2 分钟)
我需要在电影播放 30 分钟后播放第一个视频广告。
并且需要在电影播放 60 分钟后播放第二个视频广告。
我需要按以下顺序播放 3 个视频
正片(前 30 分钟)--> 2 分钟的第一个广告 --> 正片(31-60 分钟)--> 2 分钟的第二个广告 --> 正片(61-结束)
我的问题
如何在主url之间concatenate/play两个视频url?
谁能帮帮我。这个问题让我头疼了 16 多个小时。
终于从官方 github issues
得到了解决方案
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);
我正在尝试连接三个视频 url 并使用 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 小时)
我的第二个来源和第三个来源是视频广告(2 分钟)
我需要在电影播放 30 分钟后播放第一个视频广告。 并且需要在电影播放 60 分钟后播放第二个视频广告。
我需要按以下顺序播放 3 个视频
正片(前 30 分钟)--> 2 分钟的第一个广告 --> 正片(31-60 分钟)--> 2 分钟的第二个广告 --> 正片(61-结束)
我的问题
如何在主url之间concatenate/play两个视频url?
谁能帮帮我。这个问题让我头疼了 16 多个小时。
终于从官方 github issues
得到了解决方案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);