天天看點

android exoplayer的使用

一.背景

    最近公司讓研究一個exoplayer播放器,是以在網上找了些資料,記錄一下。英語不錯的同學可以直接看文檔( 點選打開連結)    另外附上官方的github位址( https://github.com/google/ExoPlayer)

二.步驟

  1. 添加exoplayer的依賴
  2. 建立simpleExoplayer執行個體
  3. 将播放器和SimpleExoplayerView結合
  4. 用MediaSource準備播放
  5. 結束播放釋放資源

三.具體代碼

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'
           

最後不要忘記加網絡的權限