Genta Hirauchi

公開日:2020/06/03
更新日:2020/08/03

【Kotlin】ExoPlayerで、ネットワーク上の動画を再生する方法を解説

  • ネットワーク上の動画を再生したい。

Androidには、ExoPlayerという、ネットワーク上の動画再生処理(HTTPストリーミング)を簡単に実装できるオープンソースプロジェクトがあります。

本記事では、ExoPlayerで動画を再生する基本的な実装方法について解説致します。

参考:ExoPlayer | Android デベロッパー

目次

Macでローカルにサーバーを立ち上げる方法

今回ExoPlayerで再生を行う動画は、ローカルサーバー上にアップロードされているものを使用します。ですので、ローカルサーバーの立ち上げが必要となります。

自分が使用しているPCはMacですので、Apacheを起動し、サーバー環境を構築致します。

詳しくは、以下の記事をご覧ください。

【Kotlin】MacのlocalhostにAndroid端末から接続する方法を解説

サーバーとの通信処理を実装する際、実際に使用されているサーバーを使用してするのではなく、まずはローカル環境にサーバーを構築して実装を進めると思います。本記事では、Macのローカル環境にサーバーを立ち上げる方法と、Androidの実機、およびEmulatorから、localhostにアクセスする方法について解説致します。

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を設定することで、動画再生画面が表示されます。