기본 SDK가 있는 그림

이 항목에서는 브라이트코브 네이티브 플레이어 SDK를 사용하여 앱에서 픽처 모드에서 픽처 모드를 구현하는 방법을 배우게 됩니다.

개요

PIP (Picture in Picture) 모드를 사용하면 사용자가 장치에서 멀티 태스킹을 수행 할 수 있습니다. 이 기능을 사용하면 사용자가 다른 작업을 수행하는 동안 작은 비디오 재생 창이 화면 모서리에 고정되는 앱을 만들 수 있습니다.

사진 모드에서 사진
사진 모드에서 사진

특징

Brightcove Native SDK에서 제공하는 PIP 기능은 다음 기능을 지원합니다.

  • 사용자가 컨트롤 막대의 PIP 아이콘을 클릭하여 PIP 모드로 들어가면 개발자는 프로그래밍 방식으로 PIP 모드로 들어갈 수 있습니다.
  • 사용자는 화면 모서리 주변의 PIP 창을 끌어 가장 편리한 위치에 배치 할 수 있습니다.
  • 사용자는 PIP 창에서 비디오를 일시 중지 및 재생하거나 완전히 제거 할 수 있습니다. 사용자는 또한 인앱 경험으로 비디오를 최대화 할 수 있습니다.
  • PIP 모드는 앱, 장치 배경 및 기타 응용 프로그램 위에서 작동합니다.

지원되는 버전

PIP 모드는 다음 버전에서 지원됩니다.

디바이스 OS 버전

  • 안드로이드: Oreo 8.0 이상 (API 레벨 26 이상)
  • iOS: 10.0 이상

네이티브 SDK 버전

  • 안드로이드: Android 버전 6.1.0+ 용 Brightcove Native SDK
  • iOS: iOS용 브라이트코브 네이티브 SDK 버전 6.4.4+

안드로이드 구현

다음 항목은 PIP 기능을 시작하는 데 도움이됩니다.

자세한 내용은 Android의 Picture in Picture 지원 가이드를 참조하세요 .

BrightcovePlayer 사용

화면 속 화면 사용을 시작하는 가장 쉬운 방법은 활동을 확장하는BrightcovePlayer것입니다. 이렇게 하려면 다음과이 같이 하십시오.

  1. styles.xml파일에서 다음 코드를 추가하여 사진 속 화면 버튼을 활성화합니다.
    <style name="BrightcoveControlBar" parent="BrightcoveControlBarDefault">
        <item name="brightcove_picture_in_picture">true</item>
    </style>
  2. 당신의 AndroidManifest.xml파일, PIP 지원 선언다음을 추가하여 활동에 대해
    <activity android:name="VideoActivity"
      android:resizeableActivity="true"
      android:supportsPictureInPicture="true"
      android:configChanges=
          "screenSize|smallestScreenSize|screenLayout|orientation"
      ...
    

    이것은 중요한 단계입니다. 이를 선언하지 않으면 사용자가 브라이트코브 미디어 컨트롤러에서 화면 속 화면 버튼을 누르면 다음과 같은 메시지가 표시됩니다. IllegalStateException

    java.lang.IllegalStateException: enterPictureInPictureMode: Current activity does not support picture in picture

픽처 인 픽처 모드로 전환하면 픽처 인 픽처 창의 모든 활동 구성 요소를 유지하면서 활동 자체의 크기가 조정됩니다. 이를 방지하고보다 쉬운 구현을 제공하기 위해 Brightcove 비디오보기가 자동으로 전체 화면으로 이동하여 PIP 창에 비디오 만 표시하는 상위 레이아웃 너비 및 높이와 일치합니다. 이 모드를 종료하면 Brightcove 비디오보기가 원래 상태로 돌아갑니다.

앱에서 화면 속 화면을 원하지 않는 경우 styles.xml파일에 다음 코드를 추가하여 사진 속 화면 버튼을 비활성화할 수 있습니다.

<style name="BrightcoveControlBar" parent="BrightcoveControlBarDefault">
    <item name="brightcove_picture_in_picture">false</item>
</style>

정기적 인 활동 사용

BrightcovePlayer확장되지 않는 액티비티를 사용하는 경우 이전 섹션에서 언급한 것처럼 화면 속 화면 지원을 선언하는 것 외에도 몇 가지 추가 단계를 수행해야 합니다.

  1. MainActivity.java파일을 엽니다.
  2. 액티비티onCreate메서드에서 브라이트코브에 액티비티를 등록합니다PictureInPictureManager .
    PictureInPictureManager.getInstance().registerActivity(Activity, BrightcoveVideoView)
  3. onDestroy메서드에서 Activity를 등록 취소합니다.
    PictureInPictureManager.getInstance().unregisterActivity(Activity)
  4. onPictureInPictureModeChanged Activity 메서드를 재정의하고 아래와 같이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 미디어 컨트롤러에 PIP 버튼이 자동으로 나타납니다. 다음과 같이 프로그래밍 방식으로 PIP를 트리거 할 수도 있습니다.

PictureInPictureManager.getInstance().enterPictureInPictureMode()

PIP 사용자 정의

를 통해 그림 창의 동작 및 모양을 사용자 지정할 수PictureInPictureManager있습니다. 예를 들어 창의 가로 세로 비율을 변경하거나 비디오에 대한 캡션을 활성화 / 비활성화 할 수 있습니다.

Android Oreo는 기본적으로 맞춤 설정할 수있는 세 가지 매개 변수를 제공합니다.

사용자 조치

브라이트코브는RemoteAction기본적으로Play/Pause비디오 이벤트를 처리하고 해당 아이콘을 설정하는 기능을 추가합니다. 즉, 다음과 같이 설정한 원격 동작 목록에 기본값이RemoteAction추가됩니다.

setUserActions

제한된 수의 작업 만 설정할 수 있습니다. 최대 작업 수를 가져오려면다음을 호출하십시오.

Activity.getMaxNumPictureInPictureActions()

자막

에서 다음을 호출하여 Picture in Picture 모드에서 비디오를 재생할 때 클로즈드 캡션을 활성화/비활성화할 수inPictureInPictureManager있습니다.

setClosedCaptionsEnabled(boolean)

선택 캡션은 휴대폰에서는 기본적으로 비활성화되지만 태블릿에서는 활성화됩니다. Picture in Picture 모드에서 재생하는 동안 선택 캡션의 크기를 줄이려면 다음을 호출하여0및 사이의 값을 설정하십시오1.0f .

setClosedCaptionsReductionScaleFactor(float)

기본적으로 화면 속 화면 모드의 클로즈드 캡션 크기는 원본 크기의 50% 0.5f또는 50% 입니다. 마지막으로onUserLeaveHint() Activity가 호출될 때 사진 모드로 사진을 입력하려면true다음과 같이 설정합니다.

setOnUserLeaveEnable(boolean)

매개변수

현재 PIP 매개 변수를 검색하려면 다음을 호출 할 수 있습니다.

PictureInPicture.getBrightcovePictureInPictureParams()

이 호출은 앞에서 설명한 모든 매개 변수에 대한 게터가 있는BrightcovePictureInPictureParams객체를 반환합니다.

iOS 구현

화면 속 화면 기능을 시작하려면 에showPictureInPictureButtonBCOVPUIPlayerViewOptions추가하세요. true로 설정하면 지원되는 장치의 플레이어 컨트롤에 화면 속 화면 버튼이 추가됩니다.

화면 속 화면 기능은 iOS 14의새로운 기능 중 하나입니다 .

자세한 내용은 다음을 참조하십시오.

코드 예제는기본 비디오 재생 앱을 참조하십시오 .

제한 사항

Android

  • PIP는 Android Oreo 이상이 설치된 장치에서만 작동합니다.
  • 현재 Android TV에서는 지원되지 않습니다.
  • 광고가 있는 동영상은 지원되지 않습니다.
  • 360 동영상은 지원되지 않습니다.

iOS

  • Picture in Picture는 Brightcove의 서버 측 광고(SSAI)에서 지원되지만 PIP는 IMA, FreeWheel 또는 Pulse를 포함한 클라이언트 측 광고에서 지원되지 않습니다.
  • 360 동영상은 지원되지 않습니다.

알려진 문제

Android

  • PIP 모드에서 재생되는 Widevine 보호 동영상은 Android 8.0이 설치된 Pixel C에서 투명하거나 검은 색으로 바뀝니다. 이 문제는 Android 8.1이 설치된 동일한 기기에서 재현 할 수 없습니다.