概要: Brightcove Native SDK for Android
ドキュメントの構成
Brightcove では、ドキュメントを体系的で、整理されており、直感的なものに保つよう努めています。そのため、すべてのプラグインおよび統合に関する詳細は github の README を活用しています。利便性のため、これらのプラグインを以下に一覧化し、リンクを掲載しています。
Android のサポート
Native SDK for Android は、以下の Android バージョンをサポートします。
アクティブ サポート
Brightcove は、最新の Android SDK について、以下の Android バージョンでアクティブ サポートを提供します。
- 16
- 15
- 14
- 13
パッシブ サポート
Brightcove は、以下の Android バージョンに対してパッシブ サポートを提供します。
- 12
- 11
- 10
- 9
- 8
- 7
- 6
- 5
サポート レベルの考え方
サポートは OS のメジャー バージョン(例: Android 16)を基準として定義されます。通常、各メジャー バージョンにおける最新リリースを指します。
Google による最新の技術改善を活用できるよう、当社では 2 つのサポートレベルを提供しています。
- アクティブ: Brightcove がこれらの OS バージョンでテストを実施し、不具合を能動的に修正します。
- パッシブ: Brightcove SDK は OS バージョンをサポートしますが、不具合修正は個別判断で対応します。
一般的に、Brightcove はユーザーベースの 80% が使用している OS バージョンに対してアクティブ サポートを提供し、少なくとも 5% のユーザーベースで使用されているその他のバージョンに対してパッシブ サポートを提供します。
Android バリアントのサポート
Brightcove Native SDK for Android は、Android OS のメイン ライン リリース向けに開発され、これらでテストされています。Brightcove は、LineageOS などの Android のアフターマーケット配布版を公式にはサポートしていません。
Android のバリアント版を実行しているデバイスのユーザーは、Native SDK for Android を使用して開発されたアプリケーションで問題が発生する可能性があります。
Connected TV / セット トップ ボックス
Native SDK for Android は、次の Android ベースのセット トップ ボックスをサポートします。
- Android TV
- Fire TV (FireOS 5.0+ デバイス)
テストに使用したセット トップ ボックス デバイスには、以下が含まれます。
- Nexus Player
- Nvidia Shield
Brightcove Native SDK for Android のサンプル アプリは Android TV と Fire TV で動作します。つまり、TV 向けアプリに広告、コンテンツ保護 (DRM)、ライブ再生、カスタム UI コントロール、Brightcove Analytics、QoE メトリクスを組み込むことができます。
TV アプリで UI コントロールのスタイルを適用する詳細については、Styled Controls サンプル アプリをご確認ください。
はじめに
Android SDK を使用した開発を始める前に、いくつか理解しておくべき概念があります。
- メディア
Native SDK の現行バージョンでは、Playback API を通じて Video Cloud アカウントのコンテンツを再生することや、インターネットからアクセス可能な URL を持つリモートアセットとしてコンテンツを再生することができます。
- 分析
Native SDK を使用すると、Video Cloud のお客様は Video Cloud 上で自動的に充実した分析データを取得できます。
- Gradle
Gradle は Android SDK のビルドシステムの基盤であり、Android Studio に統合されています。
- Maven リポジトリ
Brightcove Native SDK for Android の Maven アーティファクト(jar ファイル)は、Brightcove Maven Repo から利用できます - https://repo.brightcove.com/releases
- Android SDK の概要
SDK の理解を深めるために、ネイティブ動画プレーヤーの制御に伴う複雑さを処理するために、主要コンポーネントがどのように連携しているかを学びます。
- Native SDK for Android を使用してアプリを構築する
Brightcove Native SDK for Android を使用して、独自のバックエンドシステムから動画を再生する最初のアプリを作成します。Video Cloud のお客様の場合は、Brightcove Catalog サービスから動画を取得して再生することもできます。
- オンデマンド トレーニング
Android Studio で、Video Cloud ライブラリの動画およびプレイリストを再生するアプリを構築する手順を解説したトレーニング動画シリーズをご覧ください。
- メーリング リスト
Brightcove Native SDKs のメーリング リストに参加して、Native SDK のリリース情報を受け取りましょう。
SDK のダウンロード
Brightcove Native SDK for Android の最新バージョンを入手してください。
| パッケージ (Github リポジトリ) |
リファレンス ドキュメント | 備考 | サポートされているフレームワーク | サンプル | |
|---|---|---|---|---|---|
| SDK | Native SDK for Android v10.4.3 | SDK リファレンス | リリースノート | Media3 1.6.1 | サンプル アプリケーション |
または、このボタンを選択してください。
注意事項
以下の注意事項は、Native SDK の最新バージョンに関するものです。
バージョン 10.0.0 以降、Brightcove Native SDK for Android は Media3 を使用しています。
バージョン 6.10.0 以降、Brightcove Native SDK for Android は、従来のサポート ライブラリの代わりに Jetpack(androidx.*)ライブラリを使用しています。この変更は、Exoplayer バージョン 2.10.0 以降で必須となります。Jetpack を使用するには、アプリが次の要件を満たしている必要があります。
- Jetpack(AndroidX)依存関係への移行
- Android Gradle Tools 3.2.0
- Gradle バージョン 4.6
JetPack への移行方法の詳細については、公式の Android 移行ガイド を参照してください。
android {
compileOptions {
targetCompatibility JavaVersion.VERSION_11
}
}
これにより、プロジェクトの compileSdkVersion の値に基づくデフォルトの Java バージョンが上書きされます。
Core SDK のインストール
Brightcove Core SDK のインストールは非常に簡単です。方法は 2 つあります。
gradle ビルドシステムを使用する
Brightcove SDK とその依存関係を追加する最も簡単な方法は、Android Studio の gradle ビルドシステムを使用することです。
Gradle コミュニティでは、「+」文字を使用した動的な依存関係バージョンの指定は推奨されていません。動的バージョンを使用すると、新しい API が予期せずアプリのソースコードと互換性を失う可能性があり、ビルドプロセスに大きなリスクをもたらします。
gradle の使用方法の詳細については、Android の ビルド依存関係の追加 ドキュメントを参照してください。
SDK を手動でダウンロードする
次の手順で Brightcove SDK を手動でダウンロードすることもできます。
- SDK をダウンロードして解凍します。複数のフォルダーが含まれています。
- sdk フォルダー内に、android-sdk-x.x.x.aar という名前の Core SDK があります。x.x.x は最新の SDK バージョン番号です。
- 必要に応じて、android-sdk-x.x.x.aar ファイルと関連するプラグイン ファイルをライブラリに追加します。
統合
以下の表には、SDK 実装にプラグインを統合するためのリンクが含まれています。プラグインはそれぞれの Github リポジトリからダウンロードでき、各リポジトリにはプラグインの設定方法を説明した詳細な README が用意されています。
サンプル アプリケーションでは、SDK と統合された各プラグインの基本機能を確認できます。これらのサンプル アプリは各プラグインを学ぶための良い方法であり、デバッグ時の参照ポイントとしても役立ちます。
| カテゴリ | Brightcove プラグイン | リファレンス ドキュメント | サンプル アプリ | サポートされているパートナー/ベンダー プラグイン |
|---|---|---|---|---|
| 広告 | FreeWheel プラグイン [1] | FreeWheel リファレンス | Basic FreeWheel サンプル | FreeWheel AdManager library 6.28.0 |
| FreeWheel と Widevine Modular のサンプル | ||||
| IMA プラグイン [2] | IMA リファレンス | IMA を使用した広告ルールのサンプル | Google IMA 3.37.0 | |
| IMA と Widevine を使用した広告ルールのサンプル | ||||
| Basic IMA VAST サンプル | ||||
| Pulse プラグイン | Pulse リファレンス | Pulse サンプル | Pulse SDK 2.5.20.3.0 | |
| SSAI プラグイン | SSAI リファレンス | Basic SSAI サンプル | なし | |
| アナリティクス | Omniture プラグイン [3] | Omniture リファレンス | AdobeVideoLibrary 4.11.0 VideoHeartbeat 2.0.0 |
|
| Chromecast | Cast プラグイン | Cast リファレンス | Brightcove Receiver サンプル Google Receiver サンプル |
Media3 1.6.1 |
プラグインの組み合わせ
Native SDK for Android では、ほとんどのプラグインを組み合わせて使用できます。この サンプル アプリでは、Brightcove ExoPlayer を使用して Google IMA 3.37.0 の広告を配信し、Widevine Modular によるコンテンツ保護を行う方法を紹介しています。
統合
以下の表には、SDK 実装にプラグインを統合するためのリンクが含まれています。プラグインはそれぞれの Github リポジトリからダウンロードでき、各リポジトリにはプラグインの設定方法を説明した詳細な README が用意されています。
サンプル アプリケーションでは、SDK と統合された各プラグインの基本機能を確認できます。これらのサンプル アプリは各プラグインを学ぶための良い方法であり、デバッグ時の参照ポイントとしても役立ちます。
| カテゴリ | Brightcove プラグイン | リファレンス ドキュメント | サンプル アプリ | サポートされているパートナー/ベンダー プラグイン |
|---|---|---|---|---|
| 広告 | FreeWheel プラグイン [1] | FreeWheel リファレンス | Basic FreeWheel サンプル | FreeWheel AdManager library 6.28.0 |
| FreeWheel と Widevine Modular のサンプル | ||||
| IMA プラグイン [2] | IMA リファレンス | IMA を使用した広告ルールのサンプル | Google IMA 3.37.0 | |
| IMA と Widevine を使用した広告ルールのサンプル | ||||
| Basic IMA VAST サンプル | ||||
| Pulse プラグイン | Pulse リファレンス | Pulse サンプル | Pulse SDK 2.5.20.3.0 | |
| SSAI プラグイン | SSAI リファレンス | Basic SSAI サンプル | なし | |
| アナリティクス | Omniture プラグイン [3] | Omniture リファレンス | AdobeVideoLibrary 4.11.0 VideoHeartbeat 2.0.0 |
|
| Chromecast | Cast プラグイン | Cast リファレンス | Brightcove Receiver サンプル Google Receiver サンプル |
Media3 1.6.1 |
プラグインの組み合わせ
Native SDK for Android では、ほとんどのプラグインを組み合わせて使用できます。この サンプル アプリでは、Brightcove ExoPlayer を使用して Google IMA 3.37.0 の広告を配信し、Widevine Modular によるコンテンツ保護を行う方法を紹介しています。
サンプル
Brightcove では、可能な場合は BrightcoveExoPlayerVideoView 実装を使用することを推奨しています。サンプルおよびコード スニペットについては、以下を参照してください。
- Brightcove Native SDK for Android のすべてのサンプル
- brightcove-exoplayer フォルダー – サンプルは ExoPlayer 実装を使用します。
- brightcove-player-controls フォルダー – 概念は ExoPlayer 実装で使用できます。
- 特定のタスクに役立つコード スニペット
次の表には、前のセクションの統合に関連するサンプルに加えて提供されるコード サンプルへのリンクが含まれています。
| サンプル アプリケーション | 説明 |
|---|---|
| Basic Sample | Video Cloud ライブラリの動画を再生する基本的なアプリを作成します。 |
| Chromecast | Chromecast に接続された TV へ動画をキャストします。概要については、Native SDK for Android 用 Cast プラグイン ドキュメントを参照してください。 |
| Custom Controls | プレーヤーコントロールをカスタマイズします。 |
| DRM with Widevine | Widevine を使用してコンテンツを保護します。Android フレームワークは、ExoPlayer Video View を使用する場合に Widevine Modular をサポートします。詳細については、Widevine リファレンス を参照してください。 |
| Live Stream | HLS ライブストリームを実行するアプリを作成します。 |
| Offline playback | Widevine 暗号化で保護されたものを含む DASH 動画をダウンロードして再生します。概要については、Native SDK によるオフライン再生 ドキュメントを参照してください。 |
| Remote Video | リモートサーバーから動画を読み込みます。 |
| Video list | RecyclerView を使用して複数の動画を扱います。 |
| 360° Video | projection プロパティが設定されている限り、360° 動画を再生します。コントロールバーの Video 360 ボタンをタップすると、動画は左右に並んだ映像の VR ゴーグル モードで表示されます。詳細については、Mobile SDK で 360° 動画を使用する ドキュメントを参照してください。 |
ソリューション ガイド
次の表には、Brightcove Native SDK を使用して独自のアプリを開始する際に役立つ開発者向けドキュメントへのリンクと、利用可能な機能の一部を案内する情報が含まれています。
| ガイド | 説明 |
|---|---|
| Brightcove Native SDK for Android のセットアップ | 独自のバックエンド システムのコンテンツを使用して、シンプルな動画再生アプリを開発する手順を通して、Brightcove Native SDK for Android を利用するための基本を学びます。 Video Cloud のお客様の場合は、Brightcove Catalog サービスから動画を取得して再生することもできます。 |
| プラグインの作成 | Brightcove Native SDK for Android 用のプラグインを作成する方法を学びます。 |
| View のレイアウト管理 | BrightcoveVideoView に追加した View のレイアウトを管理する方法を学びます。 |
| 画面の向きの変更を処理する | 画面の向きが変わったときに発生する望ましくないデフォルト動作を管理する方法を学びます。 |
| IAB Open Measurement | 広告測定および検証のためのサードパーティツールをサポートするために、IMA プラグインとともに Open Measurement SDK を使用する方法を学びます。 |
| ソースの選択 | 動画再生時のデフォルトのレンディション選択プロセスについて学びます。 |
| Brightcove Analytics を使用する | Brightcove SDK for Android を使用して、モバイルアプリから Brightcove Analytics のプロパティを設定する方法を学びます。 |
| プレーヤーコントロールを扱う | プレーヤーコントロールをカスタマイズして非表示にする方法を学びます。 |
サンプル
Brightcove では、可能な場合は BrightcoveExoPlayerVideoView 実装を使用することを推奨しています。サンプルおよびコード スニペットについては、以下を参照してください。
- Brightcove Native SDK for Android のすべてのサンプル
- brightcove-exoplayer フォルダー – サンプルは ExoPlayer 実装を使用します。
- brightcove-player-controls フォルダー – 概念は ExoPlayer 実装で使用できます。
- 特定のタスクに役立つコード スニペット
次の表には、前のセクションの統合に関連するサンプルに加えて提供されるコード サンプルへのリンクが含まれています。
| サンプル アプリケーション | 説明 |
|---|---|
| Basic Sample | Video Cloud ライブラリの動画を再生する基本的なアプリを作成します。 |
| Chromecast | Chromecast に接続された TV へ動画をキャストします。概要については、Native SDK for Android 用 Cast プラグイン ドキュメントを参照してください。 |
| Custom Controls | プレーヤーコントロールをカスタマイズします。 |
| DRM with Widevine | Widevine を使用してコンテンツを保護します。Android フレームワークは、ExoPlayer Video View を使用する場合に Widevine Modular をサポートします。詳細については、Widevine リファレンス を参照してください。 |
| Live Stream | HLS ライブストリームを実行するアプリを作成します。 |
| Offline playback | Widevine 暗号化で保護されたものを含む DASH 動画をダウンロードして再生します。概要については、Native SDK によるオフライン再生 ドキュメントを参照してください。 |
| Remote Video | リモートサーバーから動画を読み込みます。 |
| Video list | RecyclerView を使用して複数の動画を扱います。 |
| 360° Video | projection プロパティが設定されている限り、360° 動画を再生します。コントロールバーの Video 360 ボタンをタップすると、動画は左右に並んだ映像の VR ゴーグル モードで表示されます。詳細については、Mobile SDK で 360° 動画を使用する ドキュメントを参照してください。 |
ソリューション ガイド
次の表には、Brightcove Native SDK を使用して独自のアプリを開始する際に役立つ開発者向けドキュメントへのリンクと、利用可能な機能の一部を案内する情報が含まれています。
| ガイド | 説明 |
|---|---|
| Brightcove Native SDK for Android のセットアップ | 独自のバックエンド システムのコンテンツを使用して、シンプルな動画再生アプリを開発する手順を通して、Brightcove Native SDK for Android を利用するための基本を学びます。 Video Cloud のお客様の場合は、Brightcove Catalog サービスから動画を取得して再生することもできます。 |
| プラグインの作成 | Brightcove Native SDK for Android 用のプラグインを作成する方法を学びます。 |
| View のレイアウト管理 | BrightcoveVideoView に追加した View のレイアウトを管理する方法を学びます。 |
| 画面の向きの変更を処理する | 画面の向きが変わったときに発生する望ましくないデフォルト動作を管理する方法を学びます。 |
| IAB Open Measurement | 広告測定および検証のためのサードパーティツールをサポートするために、IMA プラグインとともに Open Measurement SDK を使用する方法を学びます。 |
| ソースの選択 | 動画再生時のデフォルトのレンディション選択プロセスについて学びます。 |
| Brightcove Analytics を使用する | Brightcove SDK for Android を使用して、モバイル アプリから Brightcove Analytics のプロパティを設定する方法を学びます。 |
| プレーヤーコントロールを扱う | プレーヤーコントロールをカスタマイズして非表示にする方法を学びます。 |
ベスト プラクティス
ここでは、Brightcove Native SDK を使用する際に役立つ追加情報を紹介します。
IMA を使用した広告
VAST 広告の配置は、通常 VMAP ドキュメントで指定します。VAST は広告そのものを記述し、VMAP は動画内での広告の配置を記述します。コードの詳細については、以下を参照してください。
IMA 広告を扱う場合、実装前に SDK の外で広告が正しく動作することを確認するのがベスト プラクティスです。以下のリンクが役立ちます。
- Google VAST 広告レスポンス検証ツール
- Digital Video Multiple Ad Playlist (VMAP) ガイド
- Google IMA 3.37.0 テクニカル フォーラム
コンパニオン広告
コンパニオン広告およびクリックスルー広告は Android TV ではサポートされません。Android TV には Web ブラウザのサポートがないため、クリックスルー URL の遷移先が存在しません。
R8 によるコード縮小
Brightcove Native SDK for Android は、Android のコード縮小および難読化ツールである R8 と連携します。R8 は Android Gradle Plugin バージョン 3.4.0 以降でデフォルトになっています。
SDK には、アプリでコード縮小を有効にした際に自動的に適用される consumer rules が同梱されています。手動での設定は不要です。
互換性
- R8: SDK バージョン 6.x 以降でサポート
- R8 フルモード: SDK バージョン 10.4.3 以降でサポート
Brightcove SDK に関して R8 関連の問題が発生した場合は、Brightcove サポートへお問い合わせください。
再生時の挙動
一部の Android デバイスでは、次のような再生時の挙動が見られる場合があります。
動画の一時停止
Samsung デバイスの Android の Smart Pause 機能は、ユーザーがデバイスの画面から目を離すと動画を一時停止します。Smart Pause 対応デバイスで動画が一時停止しないようにしたい場合は、この機能を無効にできます。