Android Exoplayerの使い方
Exoplayerとは簡単に言うとAndroidで動画再生をするためのAPIをたくさん用意したライブラリです。
通常1から動画プレイヤーを開発しようとすると、動画デコード、音声デコード、ストリーミング、復号化などを全て作らなければなりませんが、Exoplayerでは簡単なAPIですぐに実装できます。
API 16以上のSDKであれば使用できるのでハードウェアにも依存せず使用できます。
[下記公式URL]
ExoPlayer | Android デベロッパー | Android Developers
Exoplayer導入
初めにExoplayerライブラリをプロジェクトに追加します。
google(), jcenter()追加
まず、build.gradleに下記を追加します。
repositories {
google()
jcenter()
}
Exoplayerライブラリ追加
次にExoplayerのライブラリを追加するのですが、Exoplayerはいくつかのライブラリを分けていますが、一括で導入したい場合は下記です。
**※**2020/01/13時点での最新バージョンは2.11.1
implementation 'com.google.android.exoplayer:exoplayer:2.11.1'
特定のライブラリのみを追加したい場合、Exoplayerは5つのライブラリに分かれているので、これを指定してください。
Exoplayer
- core
- 動画配信用のコアライブラリ
- dash
- Dashコンテンツ用ライブラリ
- hls
- Hlsコンテンツ用ライブラリ
- smoothstreaming
- smmothstreaming用ライブラリ
- ui
- UIカスタム用のライブラリ
例えば、coreのみを指定する場合は下記です。
ライブラリを分けることはapkサイズの縮小に繋がります。
implementation 'com.google.android.exoplayer:exoplayer-core:2.11.1'
Java 8追加
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
}
Exoplayer View追加
layoutファイルに下記を追加します。
<com.google.android.exoplayer2.ui.PlayerView
android:id="@+id/playerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:surface_type="texture_view">
</com.google.android.exoplayer2.ui.PlayerView>
次にjavaファイルに下記を追加します。
private PlayerView playerView;
private SimpleExoPlayer player;
player = ExoPlayerFactory.newSimpleInstance(this);
player.addListener(this);
playerView = (PlayerView)findViewById(R.id.playerView);
DefaultDataSourceFactory dataSourceFactory = new DefaultDataSourceFactory(this,Util.getUserAgent(this,this.getPackageName()));
ExtractorMediaSource extractorMediaSource = new ExtractorMediaSource.Factory(dataSourceFactory).createMediaSource(Uri.parse(url));
playerView.hideController();
playerView.setControllerAutoShow(false);
playerView.setPlayer(player);
player.prepare(extractorMediaSource);
player.setPlayWhenReady(true);
[url]に再生した動画のurlを入れてください。
おわりに
Exoplayerはカスタムできる幅も実は多く、今回挙げた簡単な動画再生以外にもたくさんありますので、リアルタイムDASHやAES復号、おしゃれなUIなど作りたい場合はコメントなどやTwitterのDMなどでお知らせください。
以上です。