//实例化
MediaSourceBuilder mediaSourceBuilder=new MediaSourceBuilder(this,new DataSource(getApplication()));
exoPlayerManager = new ExoUserPlayer(this,mediaSourceBuilder, videoPlayerView);
- 1加载字幕文件
//构建视频媒体资源.
MediaSource videoSource = new ExtractorMediaSource(videoUri, ...);
//构建子标题媒体源
Format subtitleFormat = Format.createTextSampleFormat(
null, // 跟踪的标识符。可能是null。
MimeTypes.APPLICATION_SUBRIP, // mime类型。必须正确设置
selectionFlags, // 跑道的选择标志。
language); // 字幕语言。可能是null。
MediaSource subtitleSource = new SingleSampleMediaSource(subtitleUri, dataSourceFactory, subtitleFormat, C.TIME_UNSET);
// 播放带有副标题的视频
MergingMediaSource mergedSource = new MergingMediaSource(videoSource, subtitleSource);
//设置
mediaSourceBuilder.setMediaSource(mergedSource);
- 2 播放的视频序列
MediaSource firstSource = new ExtractorMediaSource(firstVideoUri, ...); MediaSource secondSource = new ExtractorMediaSource(secondVideoUri, ...); //播放第一个视频,然后是第二个视频. ConcatenatingMediaSource concatenatedSource = new ConcatenatingMediaSource(firstSource, secondSource); mediaSourceBuilder.setMediaSource(mergedSource);
- 3.高级构成互相嵌套 可以进一步组合使用的复合mediasources更不寻常的案件。给定两个视频A和B,下面的示例演示如何loopingmediasourceconcatenatingmediasource和可一起使用来播放所述序列(a,a,b)。
MediaSource firstSource = new ExtractorMediaSource(firstVideoUri, ...);
MediaSource secondSource = new ExtractorMediaSource(secondVideoUri, ...);
// Plays the first video twice.
LoopingMediaSource firstSourceTwice = new LoopingMediaSource(firstSource, 2);
// Plays the first video twice, then the second video.
ConcatenatingMediaSource concatenatedSource =
new ConcatenatingMediaSource(firstSourceTwice, secondSource)
或者 以下示例是等效的,表明可以存在一种以上的方式实现相同的结果。
MediaSource firstSource = new ExtractorMediaSource(firstVideoUri, ...);
MediaSource secondSource = new ExtractorMediaSource(secondVideoUri, ...);
// Plays the first video twice, then the second video.
ConcatenatingMediaSource concatenatedSource =
new ConcatenatingMediaSource(firstSource, firstSource, secondSource);
- 1.调用方法 mediaSourceBuilder.setMeiDiaUri()方法,就不要使用 exoPlayerManager.setPlayerUri()方法,二者选其一就可以。
- 2.使用自定义MediaSourceBuilder是不会自动播放视频,必须说动调用 exoPlayerManager.startPlayer()。开始播放视频。
- 2.使用自定义MediaSourceBuilder是不会自动播放视频,必须说动调用 exoPlayerManager.startPlayer()。开始播放视频。
- 2.使用自定义MediaSourceBuilder是不会自动播放视频,必须说动调用 exoPlayerManager.startPlayer()。开始播放视频。
- 3.重要的事说三遍。