CA Wise

Tech Blog

Tech Blogトップに戻る

Androidの新動画プレイヤーExoPlayerを使ってみた

2017.05.01

  • このエントリーをはてなブックマークに追加
  • Pocket
いちむら
いちむらネイティブアプリエンジニア

こんにちは、開発部の市村です。SDKの開発に携わっています。
今回は、AndroidのExoPlayerというライブラリを使って動画再生を試してみました。

はじめに

ExoPlayerはGoogle製オープンソースの動画プレイヤーです。

こちらがExoPlayerの公式サイトになります。
https://google.github.io/ExoPlayer/

Androidで動画再生を行う場合、MediaPlayerを使用するのが従来の方法でしたが、 ExoPlayerを使用することによって以下のようなメリットがあります。

  • プレイヤーのカスタマイズや拡張が可能。
  • デバイス固有の問題が少ない(本当だろうか...)。
  • 動画と動画をつなげた再生やループ再生がシームレスに行える。
  • 動画のフォーマットによっては、MediaPlayerより動画再生開始までの速度が速い。
    (旧バージョンのExoPlayerの説明ですが、以下のリンク参照のこと。 https://www.youtube.com/watch?v=6VjF638VObA)
  • MediaPlayerがサポートしていない種類の動画を再生できる。

ExoPlayerはAndroid4.1(API level16)以上で利用可能です(Widevineを使用する場合は Android4.4以上)。

今回は公式のサイトを参考に、ExoPlayerを使った動画再生を試してみました。


1. gradleに以下の設定を記載して、ExoPlayerライブラリを読み込む。


2. プレイヤーのインスタンスを作成する。


3. プレイヤーをviewにアタッチする。
ライブラリに用意されたSimpleExoPlayerViewというviewもありますが、コントローラなしの状態で再生したかったので、今回はTextureViewにアタッチしてみました。


4. プレイヤーの準備


5. 再生

これで再生されるはず!と実機で動かしてみましたが、再生されません。
やっぱりTextureViewを使ったのがまずかったのか?など色々試行錯誤した結果、 以下のコードを追加すると、無事再生されました。

上記が最小限のコードですが、ExoPlayer.EventListenerを設定することによって、 プレイヤーのエラーやステータス変更など各種イベントを取得する事もできます。

ExoPlayerを使用するとなると、アプリ側にもライブラリを導入する必要があるため、 SDKとしては取り入れるか悩むところですが、公式サイトによるとデバイス固有の問題が少ないらしいので! 今後も、色々な端末で検証していきたいと思いました。

いちむら
いちむらネイティブアプリエンジニア