概要
ピクチャインピクチャ(PIP)モードでは、ユーザーはデバイスでマルチタスクを実行できます。この機能を使用すると、ユーザーが他のタスクを実行しながら、小さなビデオ再生ウィンドウを画面の隅に固定するアプリを作成できます。
特徴
Brightcoveのネイティブ SDK が提供するピクチャインピクチャ機能は、次の機能をサポートしています。
- ユーザーがコントロールバーの PIP アイコンをクリックしてピクチャモードで画像を入力する場合、開発者はプログラムで PIP モードに入ることができます。
- ユーザーは、PIP ウィンドウを画面の隅にドラッグして、最も便利な場所に配置できます。
- ユーザーは、PIP ウィンドウでビデオを一時停止して再生するか、完全に削除することができます。また、ユーザーは動画を最大化してアプリ内体験に戻すことができます。
- PIP モードは、アプリ、デバイスの背景、その他のアプリケーション上で動作します。
サポートされているバージョン
ピクチャモードの画像は、次のバージョンでサポートされています。
デバイスOSのバージョン
- Android:オレオ8.0以上(APIレベル26以上)
- iOS: 10.0+
ネイティブSDKバージョン
- Android:Android 版Brightcoveネイティブ SDK バージョン 6.1.0+
- iOS: iOS 版Brightcoveのネイティブ SDK バージョン 6.4.4 以降
Androidの実装
次のトピックは、ピクチャインピクチャ機能の開始に役立ちます。
詳細については、Android のピクチャインピクチャーサポートガイドを参照してください。
ブライトCovePlayerを使用する
ピクチャインピクチャの使用を開始する最も簡単な方法は、あなたの活動を拡張することですBrightcovePlayer
.これを行うには、次の手順を実行します。
- styles.xml ファイルで、次のコードを追加して、ピクチャインピクチャボタンを有効にします。
<style name="BrightcoveControlBar" parent="BrightcoveControlBarDefault"> <item name="brightcove_picture_in_picture">true</item> </style>
- AndroidManifest.xml ファイルで、以下を追加することにより、アクティビティの Picture in Picture サポートを宣言します。
<activity android:name="VideoActivity" android:resizeableActivity="true" android:supportsPictureInPicture="true" android:configChanges= "screenSize|smallestScreenSize|screenLayout|orientation" ...
これは重要なステップです。宣言しなかった場合、ユーザが Brightcove Media Controller の Picture in Picture ボタンを押すと、
IllegalStateException
がスローされます。java.lang.IllegalStateException: enterPictureInPictureMode: Current activity does not support picture in picture
ピクチャモードでピクチャを開始すると、アクティビティ自体のサイズが変更され、ピクチャウィンドウ内のピクチャ内のすべてのアクティビティコンポーネントが保持されます。これを回避し、実装を容易にするために、Brightcoveの動画ビューは、親レイアウトの幅と高さに合わせて、ピクチャウィンドウ内のピクチャウィンドウ内の動画のみを表示するように、自動的にフルスクリーン表示されます。このモードを終了すると、Brightcoveの動画ビューは元の状態に戻ります。
アプリにピクチャインピクチャが必要ない場合は、 styles.xml ファイルに次のコードを追加して、[ピクチャインピクチャ] ボタンを無効にすることができます。
<style name="BrightcoveControlBar" parent="BrightcoveControlBarDefault">
<item name="brightcove_picture_in_picture">false</item>
</style>
通常のアクティビティを使用する
前のセクションで説明したようにBrightcovePlayer
、ピクチャインピクチャのサポートを宣言することに加えて、拡張しないアクティビティを使用している場合は、いくつかの追加手順を実行する必要があります。
- MainActivity.java ファイルを開きます。
onCreate
アクティビティの方法で、アクティビティをBrightcoveに登録しますPictureInPictureManager
。PictureInPictureManager.getInstance().registerActivity(Activity, BrightcoveVideoView)
onDestroy
メソッドで、アクティビティを登録解除します。PictureInPictureManager.getInstance().unregisterActivity(Activity)
- 以下に示すように、
onPictureInPictureModeChanged
アクティビティメソッドをオーバーライドし、onPictureInPictureModeChanged()
メソッドを呼び出します。@Override public void onPictureInPictureModeChanged (boolean isInPictureInPictureMode, Configuration newConfig) { super.onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig); PictureInPictureManager.getInstance().onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig); }
- 最後に、
onUserLeaveHint()
Activityメソッドをオーバーライドし、onUserLeaveHint()
以下に示すように呼び出します。@Override public void onUserLeaveHint () { super.onUserLeaveHint(); PictureInPictureManager.getInstance().onUserLeaveHint(); }
以下の手順を実行すると、[ピクチャインピクチャ] ボタンが Brightcove メディアコントローラに自動的に表示されます。次のように、プログラムでピクチャをトリガーすることもできます。
PictureInPictureManager.getInstance().enterPictureInPictureMode()
画像内の図をカスタマイズする
[ピクチャ] ウィンドウのピクチャの動作と外観は、を使用してカスタマイズできますPictureInPictureManager
。例えば、ウィンドウの縦横比を変更したり、動画のキャプションを有効/無効にすることができます。
Androidのオレオはネイティブにカスタマイズできる3つのパラメータを提供します。
- アスペクト比
setAspectRatio(Rational)
- ソース境界のヒント
setSourceRectHint(Rect)
- リモートアクションの一覧
setUserActions(List<RemoteAction>)
ユーザーアクション
Brightcove では、RemoteAction
デフォルトでが追加され、Play/Pause
ビデオイベントを処理し、それぞれのアイコンが設定されます。つまり、RemoteAction
次のように設定したリモートアクションのリストにデフォルトが追加されます。
setUserActions
設定できるアクションの数は限られていることに留意してください。アクションの最大数を取得するには、以下を呼び出します。
Activity.getMaxNumPictureInPictureActions()
クローズドキャプション
ピクチャモードでビデオを再生するときに、クローズドキャプションを有効または無効にするには、で以下を呼び出しますinPictureInPictureManager
。
setClosedCaptionsEnabled(boolean)
クローズドキャプションは、スマートフォンではデフォルトで無効になっていますが、タブレットでは有効になっています。ピクチャモードで再生しているときにクローズドキャプションのサイズを小さくするには、0
以下を呼び出してからまでの値を設定します1.0f
。
setClosedCaptionsReductionScaleFactor(float)
デフォルトでは、0.5f
ピクチャモードのクローズドキャプションのサイズは元のサイズの 50% です。最後に、onUserLeaveHint()
アクティビティが呼び出されたときにピクチャモードで画像を入力するには、次のように設定しますtrue
。
setOnUserLeaveEnable(boolean)
パラメーター
ピクチャパラメータ内の現在のピクチャを取得するには、次のメソッドを呼び出します。
PictureInPicture.getBrightcovePictureInPictureParams()
この呼び出しは、BrightcovePictureInPictureParams
前に説明したすべてのパラメータのゲッターを持つオブジェクトを返します。
iOSの実装
showPictureInPictureButton
ピクチャインピクチャの使用を開始するには、にを追加しますBCOVPUIPlayerViewOptions
。true に設定すると、サポートされているデバイスのプレーヤーコントロールにピクチャインピクチャボタンが追加されます。
ピクチャーインピクチャは、 iOS 14の新機能の1つです。
詳細については、以下を参照してください。
- iOS 用 Brightcove ネイティブ SDK の「ピクチャインピクチャ」セクションのリファレンス
- アップルがカスタムプレーヤードキュメントにピクチャインピクチャを採用している
コード例については、基本的なビデオ再生アプリを参照してください。
制約事項
Android
- ピクチャインピクチャはAndroid Oreo以上のデバイスでのみ動作します
- Android TVでは現在サポートされていません
- 広告付きの動画はサポートされていません
- 360ビデオはサポートされていません
iOS
- 広告付きの動画はサポートされていません
- 360ビデオはサポートされていません
既知の問題
Android
- 画像モードで画像を再生する Widevine で保護されたビデオは、Android 8.0 のピクセルCで透明または黒に変わることがわかりました。この問題は、Android 8.1と同じデバイスでは再現できません。