Android - ExoPlayer

532 阅读1分钟

Exoplayer依赖

implementation 'com.google.android.exoplayer:exoplayer:2.17.1'

ExoPlayer的播放界面使用StyledPlayerView

<com.google.android.exoplayer2.ui.StyledPlayerView
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

自定义属性如下:

  • show_buffering:缓冲进图的显示模式,值为never时表示从不显式,值为when_playing时表示在播放时显示,值为always时表示一直显示
  • show_timeout:控制栏的消失间隔,单位为毫秒
  • use_controller:是否显示控制栏,值为true时表示显示控制栏,值为false时表示不显示控制栏
  • resize_mode:缩放模式,值为fit表示宽高比例缩放,值为fill表示填满播放器界面

绑定视图:

ExoPlayer build = new ExoPlayer.Builder(this).build();
StyledPlayerView pv = findViewById(R.id.off_video_player);
pv.setPlayer(build);

播放视频:

public void playVideo(Uri uri) {
    DefaultDataSource.Factory factory = new DefaultDataSource.Factory(this);
    MediaItem item = new MediaItem.Builder().setUri(uri).build();
    ProgressiveMediaSource mediaSource =
            new ProgressiveMediaSource.Factory(factory).createMediaSource(item);
    mPlayer.setMediaSource(mediaSource);
    mPlayer.prepare();
    mPlayer.play();
}