使用:
- 添加依賴(lài)(依賴(lài)的是整個(gè)ExoPlayer庫(kù)):
implementation 'com.google.android.exoplayer:exoplayer:2.11.1'
1.2 也可以依賴(lài)用到的庫(kù)(例如:如果只播放DASH類(lèi)型的媒體資源彤恶,可以只依賴(lài) Core, DASH, UI這三個(gè)庫(kù)):
implementation 'com.google.android.exoplayer:exoplayer-core:2.11.1'
implementation 'com.google.android.exoplayer:exoplayer-dash:2.11.1'
implementation 'com.google.android.exoplayer:exoplayer-ui:2.11.1'
1.3 整個(gè)ExoPlayer庫(kù)包括5個(gè)子庫(kù)裆泳,依賴(lài)了整個(gè)ExoPlayer庫(kù)和依賴(lài)5個(gè)子庫(kù)是一樣的
-
exoplayer-core
:核心功能 (必要) -
exoplayer-dash
:支持DASH內(nèi)容 -
exoplayer-hls
:支持HLS內(nèi)容 -
exoplayer-smoothstreaming
:支持SmoothStreaming內(nèi)容 -
exoplayer-ui
:用于ExoPlayer的UI組件和相關(guān)的資源。
- 布局文件:
<com.google.android.exoplayer2.ui.PlayerView
android:id="@+id/video_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
private PlayerView playerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
[...]
playerView = findViewById(R.id.video_view);
}
- 創(chuàng)建一個(gè)SimpleExoPlayer實(shí)例年鸳,SimpleExoPlayer是ExoPlayer接口的一個(gè)默認(rèn)的通用實(shí)現(xiàn)省撑。
private ExoPlayer player;
private boolean playWhenReady;
private int currentWindow;
private long playbackPosition;
private void initializePlayer() {
player = ExoPlayerFactory.newSimpleInstance(
new DefaultRenderersFactory(this),
new DefaultTrackSelector(), new DefaultLoadControl());
playerView.setPlayer(player);
player.setPlayWhenReady(playWhenReady);
player.seekTo(currentWindow, playbackPosition);
}
傳入了默認(rèn)的渲染工廠(DefaultRenderersFactory)赌蔑,默認(rèn)的軌道選擇器(DefaultTrackSelector)和默認(rèn)的加載控制器(DefaultLoadControl),然后把返回的播放器實(shí)例賦值給成員變量player竟秫。
- 創(chuàng)建一個(gè)MediaSource娃惯。
private void initializePlayer() {
[...]
//創(chuàng)建一個(gè)mp4媒體文件
Uri uri = Uri.parse(getString(R.string.media_url_mp4));
MediaSource mediaSource = buildMediaSource(uri);
player.prepare(mediaSource, true, false);
}
private MediaSource buildMediaSource(Uri uri) {
return new ExtractorMediaSource.Factory(
new DefaultHttpDataSourceFactory("exoplayer-codelab")).
createMediaSource(uri);
}