9
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

Android 動画再生アプリ開発(ExoPlayer)

Android Exoplayerの使い方

Exoplayerとは簡単に言うとAndroidで動画再生をするためのAPIをたくさん用意したライブラリです。

通常1から動画プレイヤーを開発しようとすると、動画デコード、音声デコード、ストリーミング、復号化などを全て作らなければなりませんが、Exoplayerでは簡単なAPIですぐに実装できます。

API 16以上のSDKであれば使用できるのでハードウェアにも依存せず使用できます。

[下記公式URL]
ExoPlayer | Android デベロッパー | Android Developers

Exoplayer導入

初めにExoplayerライブラリをプロジェクトに追加します。

google(), jcenter()追加

まず、build.gradleに下記を追加します。

build.gradle
repositories {
    google()
    jcenter()
}

Exoplayerライブラリ追加

次にExoplayerのライブラリを追加するのですが、Exoplayerはいくつかのライブラリを分けていますが、一括で導入したい場合は下記です。
2020/01/13時点での最新バージョンは2.11.1

build.gradle
implementation 'com.google.android.exoplayer:exoplayer:2.11.1'

特定のライブラリのみを追加したい場合、Exoplayerは5つのライブラリに分かれているので、これを指定してください。
Exoplayer

  • core
    • 動画配信用のコアライブラリ
  • dash
    • Dashコンテンツ用ライブラリ
  • hls
    • Hlsコンテンツ用ライブラリ
  • smoothstreaming
    • smmothstreaming用ライブラリ
  • ui
    • UIカスタム用のライブラリ

例えば、coreのみを指定する場合は下記です。
ライブラリを分けることはapkサイズの縮小に繋がります。

build.gradle
implementation 'com.google.android.exoplayer:exoplayer-core:2.11.1'

Java 8追加

build.gradle
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などでお知らせください。

以上です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
9
Help us understand the problem. What are the problem?