개요
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
것입니다. 이렇게 하려면 다음과이 같이 하십시오.
- styles.xml파일에서 다음 코드를 추가하여 사진 속 화면 버튼을 활성화합니다.
<style name="BrightcoveControlBar" parent="BrightcoveControlBarDefault"> <item name="brightcove_picture_in_picture">true</item> </style>
- 당신의 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
확장되지 않는 액티비티를 사용하는 경우 이전 섹션에서 언급한 것처럼 화면 속 화면 지원을 선언하는 것 외에도 몇 가지 추가 단계를 수행해야 합니다.
- MainActivity.java파일을 엽니다.
- 액티비티
onCreate
메서드에서 브라이트코브에 액티비티를 등록합니다PictureInPictureManager
.PictureInPictureManager.getInstance().registerActivity(Activity, BrightcoveVideoView)
onDestroy
메서드에서 Activity를 등록 취소합니다.PictureInPictureManager.getInstance().unregisterActivity(Activity)
onPictureInPictureModeChanged
Activity 메서드를 재정의하고 아래와 같이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 미디어 컨트롤러에 PIP 버튼이 자동으로 나타납니다. 다음과 같이 프로그래밍 방식으로 PIP를 트리거 할 수도 있습니다.
PictureInPictureManager.getInstance().enterPictureInPictureMode()
PIP 사용자 정의
를 통해 그림 창의 동작 및 모양을 사용자 지정할 수PictureInPictureManager
있습니다. 예를 들어 창의 가로 세로 비율을 변경하거나 비디오에 대한 캡션을 활성화 / 비활성화 할 수 있습니다.
Android Oreo는 기본적으로 맞춤 설정할 수있는 세 가지 매개 변수를 제공합니다.
- 종횡비
setAspectRatio(Rational)
- 소스 경계 힌트
setSourceRectHint(Rect)
- 원격 작업 목록
setUserActions(List<RemoteAction>)
사용자 조치
브라이트코브는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 구현
화면 속 화면 기능을 시작하려면 에showPictureInPictureButton
BCOVPUIPlayerViewOptions
추가하세요. true로 설정하면 지원되는 장치의 플레이어 컨트롤에 화면 속 화면 버튼이 추가됩니다.
화면 속 화면 기능은 iOS 14의새로운 기능 중 하나입니다 .
자세한 내용은 다음을 참조하십시오.
- iOS용 브라이트코브 네이티브 SDK의 Picture in Picture섹션 참조
- Apple의 커스텀 플레이어문서에 화면 속 화면 적용
코드 예제는기본 비디오 재생 앱을 참조하십시오 .
제한 사항
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이 설치된 동일한 기기에서 재현 할 수 없습니다.