LoginSignup
9
9

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-01-13

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

以上です。

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9