Skip to content

Latest commit

 

History

History
70 lines (60 loc) · 3.29 KB

RELEASEVIDEO.md

File metadata and controls

70 lines (60 loc) · 3.29 KB

开放自定义MediaSource

1.实例化

//实例化
 MediaSourceBuilder  mediaSourceBuilder=new MediaSourceBuilder(this,new DataSource(getApplication()));
 exoPlayerManager = new ExoUserPlayer(this,mediaSourceBuilder, videoPlayerView);

2.使用自定义MediaSource 代码如下

  • 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);

4.使用自定义MediaSource注意实现:

  • 1.调用方法 mediaSourceBuilder.setMeiDiaUri()方法,就不要使用 exoPlayerManager.setPlayerUri()方法,二者选其一就可以。
  • 2.使用自定义MediaSourceBuilder是不会自动播放视频,必须说动调用 exoPlayerManager.startPlayer()。开始播放视频。
  • 2.使用自定义MediaSourceBuilder是不会自动播放视频,必须说动调用 exoPlayerManager.startPlayer()。开始播放视频。
  • 2.使用自定义MediaSourceBuilder是不会自动播放视频,必须说动调用 exoPlayerManager.startPlayer()。开始播放视频。
  • 3.重要的事说三遍。