Brightcove Native Player SDK for Android を使用している場合、動画再生に Google ExoPlayer フレームワークを使用している可能性が非常に高いです。2016 年、Google ExoPlayer チームは、コードの大幅なリファクタリングを行い、プレーヤのメジャー バージョン 2 をリリースしました。私たちはExoPlayer 2に移行する前に、アップグレードまでにコードがより安定するよう、しばらく時間を置くことにしました。
2017 年、私たちは ExoPlayer 2 を評価し、ブライトコーブ SDK とそのユーザーにとって素晴らしい追加となるアップグレードを行う時が来たと結論づけました。
エクソプレーヤー2へのアップグレード
ExoPlayer 2 にアップグレードする際、ブライトコーブ ネイティブ プレーヤー SDK for Android に両方の ExoPlayer バージョンを残すことにしました。
ExoPlayer 2の探索を開始するには、次のように変更します。 build.gradle
ファイルを置き換える compile project(':players:exoplayer')
と compile project(':players:exoplayer2')
をdependenciesブロックに追加した。
Google ExoPlayerチームが彼らのプレーヤーの第2バージョンで行ったアーキテクチャー上の変更についてはすでにご存じかもしれない。いくつかのパブリックなクラスは名前が変更され、他のクラスは削除され、いくつかの追加があった。詳しくはExoPlayer 2 - New package and class namesをご覧ください。
ExoPlayer 2 へのアップグレード プロセスをできるだけ簡単にするために、Android 用 Brightcove Native Player SDK では、これらのアーキテクチャの変更を管理するために多くの努力が払われてきました。アプリケーションがブライトコーブのクラスのみを使用している場合、アップグレードの労力は最小限で済みます。ただし、公開されている ExoPlayer のレガシークラスや、いくつかの ExoPlayerVideoDisplayComponent
内部リスナーがExoPlayerコールバックに依存している場合、いくつかの変更に遭遇する可能性があります。
エラーが発生した場合は、ExoPlayer 2 Frameworkへの移行ドキュメントの変更点を確認してください。
エクソプレーヤー2へのアップグレードのメリット
Brightcove Native SDK for Android の ExoPlayer 2 は、従来の ExoPlayer と同じ機能を提供します。これには、WebVTT や EIA-608 などの複数のオーディオ トラックやクローズド キャプションをサポートする簡単なオンデマンド動画(VOD)再生、Widevine Modular 保護コンテンツ再生、Google Interactive Media Ads(IMA)や FreeWheel を使用したクライアント側広告、Android TV や Fire TV のサポート、Video 360、オフライン再生などが含まれます。また、VideoCloud や Dynamic Delivery などの Brightcove サービスとの完全な統合も含まれています。
ExoPlayer 2では、Google ExoPlayerチームはフレームワークに新しい機能を追加し、既存機能のサポートを改善し、多くのバグを修正し、ExoPlayer 2をより堅牢で信頼性の高いものにしました。これにより、特にVODとライブ再生のためのHTTPライブストリーミング(HLS)を中心に多くのカスタムコードを使用していたレガシープレーヤーで使用していたExoPlayerのフォークバージョンから移行することができました。私たちの目標は、フォークではなく、Google ExoPlayerを直接使用し続けることで、将来のアップデートをより速く、より頻繁に適用できるようにすることです。
ExoPlayer 2フレームワークの重要な部分に多くの改良と追加がなされました。
- DASHマルチピリオドに完全対応。
- DRMの暗号化方式を追加し、オフライン・ライセンシングをサポート。
- ID3の不正なメタデータに対するより良い処理が含まれています。
- WebVTTとEIA608キャプションのサポートが向上しました。
- バッファリングされたコンテンツを前方にシークする際の改善。
Brightcove Native SDK for Android と ExoPlayer 2 を使用することで、アプリは自動的にこれらの拡張機能をすべて利用できるようになります。
前述したように、ExoPlayerはHLSのサポートも大幅に改善した。
- EXT-X-DISCONTINUITY、EXT-X-START、EXT-X-DISCONTINUITY-SEQUENCE、EXT-X-PROGRAM-DATE-TIMEなどのHLSタグのサポートを追加または改善。
- HLSマスタープレイリストで利用可能な場合、平均帯域幅の使用に対応しました。
- いくつかの点でMPEG-TSのサポートが向上した。
- ライブ・コンテンツを識別し、扱うためのいくつかのユーティリティ・メソッド。
- BehindLiveWindowException の処理が改善されました。これは、Android 用 Brightcove Native Player SDK が HLS Live でより良い体験を提供するために活用した機能強化です。
ExoPlayer 2ライブラリの追加と修正の全リストはリリースノートで確認できます。
ExoPlayer 2 Playerオブジェクトに直接アクセスすることで利用できる機能は他にもあります。ただし、ExoPlayer 2のクラスを直接操作する場合、ExoPlayerの新しいバージョンがリリースされたときに、あなたのコードに変更を加える可能性が高くなることに注意する必要があります。ExoPlayerインスタンスは getExoPlayer()
メソッドの ExoPlayerVideoDisplayComponent
クラスを使用しています。現在 SimpleExoplayerInstance
したがって、以下のように、このオブジェクトにキャストして、そのユーティリティ・メソッドを使うことができる。
ExoPlayerVideoDisplayComponent displayComponent = (ExoPlayerVideoDisplayComponent) brightcoveVideoView.getVideoDisplay();
ExoPlayer exoPlayer = displayComponent.getExoPlayer();
if (exoPlayer instanceof SimpleExoPlayer) {
SimpleExoPlayer simpleExoPlayer = (SimpleExoPlayer) exoPlayer;
}
興味のある機能の一例として、ExoPlayerで可変速再生を設定することができます。
まだの方は、ExoPlayer 2へのアップグレードをお勧めします。