公開日:2020/06/03更新日:2020/08/03
【Kotlin】ExoPlayerで、ネットワーク上の動画を再生する方法を解説

- ネットワーク上の動画を再生したい。
Androidには、ExoPlayerという、ネットワーク上の動画再生処理(HTTPストリーミング)を簡単に実装できるオープンソースプロジェクトがあります。
本記事では、ExoPlayerで動画を再生する基本的な実装方法について解説致します。
目次
Macでローカルにサーバーを立ち上げる方法
今回ExoPlayerで再生を行う動画は、ローカルサーバー上にアップロードされているものを使用します。ですので、ローカルサーバーの立ち上げが必要となります。
自分が使用しているPCはMacですので、Apacheを起動し、サーバー環境を構築致します。
詳しくは、以下の記事をご覧ください。
ExoPlayerで、ネットワーク上の動画を再生する方法
ExoPlayerの導入とJava 8の設定
ExoPlayerを使用できるようにするため、build.gradleに以下の設定を追加します。
ExoPlayerのバージョンが2.9.0以上の場合は、Java 8の設定が必要となります。
サンプルコードでは、ExoPlayerのバージョンに2.11.4を指定しております。これは、2020年6月3日(記事投稿日)時点の最新のバージョンです。現在の最新のバージョンに関しましては、Releases · google/ExoPlayerをご参照ください。
権限の追加
続いて、AndroidManifestに、ネットワークの権限を追加致します。
uses-permissionで、ネットワークの権限を追加しております。
また、applicationに、android:usesCleartextTraffic=”true”という設定を追加しました。
APIレベル28以上では、クリアテキストのサポートがデフォルトで無効になっているため、有効に切り替えております。
参考:ネットワーク セキュリティ構成 | Android Developers
動画再生処理の実装
では、これよりExoPlayerの実装に入っていきます。まずは、レイアウトファイルに、PlayerViewを実装します。
com.google.android.exoplayer2.ui.PlayerViewでExoPlayerのPlayerViewを実装し、IDを設定しております。
レイアウトの実装ができましたら、MainActivityにて、Playerの設定を行います。
7〜10行目では、MediaSourceの作成を行なっております。
サンプルコードでは、localhostのURLに、10.0.2.2を指定しております。これは、Emulatorで動作確認をしたためです。Emulatorでlocalhostに接続する際は、http://localhostではなく、http://10.0.2.2と指定しなければなりません。
参考:Android Emulator のネットワークを設定する | Android Developers
12〜13行目では、ExoPlayerFactory.newSimpleInstance(Context context)で、SimpleExoPlayerを生成し、prepare()でMediaSourceをPlayerにセットしております。これで、再生準備が完了です。
最後に、レイアウトファイルに実装したPlayerViewのplayerに、SimpleExoPlayerを設定することで、動画再生画面が表示されます。
以上、ExoPlayerでネットワーク上の動画を再生する方法の解説でした。最後までご覧いただき、ありがとうございました。