サポート問い合わせ先| システムステータス
ページコンテンツ

    ネイティブSDKを含むピクチャーインピクチャー

    このトピックでは、Brightcove Native Player SDKを使用して、アプリにPicture inPictureモードを実装する方法を学習します。

    概要

    ピクチャインピクチャ(PIP)モードでは、ユーザーはデバイスでマルチタスクを実行できます。この機能を使用すると、ユーザーが他のタスクを実行しながら、小さなビデオ再生ウィンドウを画面の隅に固定するアプリを作成できます。

    Picture in picture mode
    ピクチャモードでの画像

    特徴

    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 .これを行うには、次の手順を実行します。

    1. styles.xml ファイルで、次のコードを追加して、ピクチャインピクチャボタンを有効にします。
      <style name="BrightcoveControlBar" parent="BrightcoveControlBarDefault">
          <item name="brightcove_picture_in_picture">true</item>
      </style>
    2. 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、ピクチャインピクチャのサポートを宣言することに加えて、拡張しないアクティビティを使用している場合は、いくつかの追加手順を実行する必要があります。

    1. MainActivity.java ファイルを開きます。
    2. onCreateアクティビティの方法で、アクティビティをBrightcoveに登録しますPictureInPictureManager
      PictureInPictureManager.getInstance().registerActivity(Activity, BrightcoveVideoView)
    3. onDestroyメソッドで、アクティビティを登録解除します。
      PictureInPictureManager.getInstance().unregisterActivity(Activity)
    4. 以下に示すように、onPictureInPictureModeChangedアクティビティメソッドをオーバーライドし、onPictureInPictureModeChanged()メソッドを呼び出します。
      @Override
        public void onPictureInPictureModeChanged (boolean isInPictureInPictureMode, Configuration newConfig) {
           super.onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig);
           PictureInPictureManager.getInstance().onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig);
        }
    5. 最後に、onUserLeaveHint() Activityメソッドをオーバーライドし、onUserLeaveHint()以下に示すように呼び出します。
      @Override
        public void onUserLeaveHint () {
           super.onUserLeaveHint();
           PictureInPictureManager.getInstance().onUserLeaveHint();
        }

    以下の手順を実行すると、[ピクチャインピクチャ] ボタンが Brightcove メディアコントローラに自動的に表示されます。次のように、プログラムでピクチャをトリガーすることもできます。

    PictureInPictureManager.getInstance().enterPictureInPictureMode()

    画像内の図をカスタマイズする

    [ピクチャ] ウィンドウのピクチャの動作と外観は、を使用してカスタマイズできますPictureInPictureManager。例えば、ウィンドウの縦横比を変更したり、動画のキャプションを有効/無効にすることができます。

    Androidのオレオはネイティブにカスタマイズできる3つのパラメータを提供します。

    ユーザーアクション

    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つです

    詳細については、以下を参照してください。

    コード例については、基本的なビデオ再生アプリを参照してください

    制約事項

    Android

    • ピクチャインピクチャはAndroid Oreo以上のデバイスでのみ動作します
    • Android TVでは現在サポートされていません
    • 広告付きの動画はサポートされていません
    • 360ビデオはサポートされていません

    iOS

    • 広告付きの動画はサポートされていません
    • 360ビデオはサポートされていません

    既知の問題

    Android

    • 画像モードで画像を再生する Widevine で保護されたビデオは、Android 8.0 のピクセルCで透明または黒に変わることがわかりました。この問題は、Android 8.1と同じデバイスでは再現できません。

    ページの最終更新日04 Oct 2021