一.背景
最近公司讓研究一個exoplayer播放器,是以在網上找了些資料,記錄一下。英語不錯的同學可以直接看文檔( 點選打開連結) 另外附上官方的github位址( https://github.com/google/ExoPlayer)
二.步驟
- 添加exoplayer的依賴
- 建立simpleExoplayer執行個體
- 将播放器和SimpleExoplayerView結合
- 用MediaSource準備播放
- 結束播放釋放資源
三.具體代碼
public class MainActivity extends AppCompatActivity {
private Context mContext;
private SimpleExoPlayerView simpleExoPlayerView;
private SimpleExoPlayer simpleExoPlayer;
private DataSource.Factory dataSourceFactory;
private EventLogger eventLogger;
private Handler mainHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = this;
simpleExoPlayerView = (SimpleExoPlayerView) findViewById(R.id.player_view);
init();
}
private void init() {
// 1 create a default TrackSelector
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelection.Factory videoTrackSelectionFactory =
new AdaptiveTrackSelection.Factory(bandwidthMeter);
DefaultTrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
// 列印日志
eventLogger = new EventLogger(trackSelector);
// 2. Create the player
simpleExoPlayer = ExoPlayerFactory.newSimpleInstance(mContext, trackSelector);
// bind the player to the view
simpleExoPlayerView.setPlayer(simpleExoPlayer);
// 預設帶寬測量
DefaultBandwidthMeter defaultBandwidthMeter =
new DefaultBandwidthMeter();
dataSourceFactory =
new DefaultDataSourceFactory(mContext,
Util.getUserAgent(mContext, "ExoPlayerDemo"), defaultBandwidthMeter);
Uri uri = Uri.parse("http://devimages.apple.com/samplecode/adDemo/ad.m3u8");
MediaSource mediaSource = new HlsMediaSource(uri, dataSourceFactory, mainHandler, eventLogger);
// 準備播放
simpleExoPlayer.prepare(mediaSource);
// 自動播放
simpleExoPlayer.setPlayWhenReady(true);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (simpleExoPlayer != null) {
simpleExoPlayer.release();
}
}
}
布局檔案
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.wxj.exoplayer.MainActivity" >
<com.google.android.exoplayer2.ui.SimpleExoPlayerView
android:id="@+id/player_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
依賴檔案,我這裡依賴的全部的,其實你可以選擇一兩個就行
compile 'com.google.android.exoplayer:exoplayer-core:r2.5.1'
compile 'com.google.android.exoplayer:exoplayer-dash:r2.5.1'
compile 'com.google.android.exoplayer:exoplayer-ui:r2.5.1'
compile 'com.google.android.exoplayer:exoplayer-hls:r2.5.1'
compile 'com.google.android.exoplayer:exoplayer-smoothstreaming:r2.5.1'
最後不要忘記加網絡的權限