알려진 문제: 브라이트코브 고유 플레이어 SDK

이 항목에서는 브라이트코브 네이티브 플레이어 SDK와 관련된 알려진 문제에 대해 알아봅니다.

일반

큰 캡션 파일

라이브 이벤트의 일부로 기록 된 캡션은 때때로 다음과 같은 큐가있는 캡션 파일을 생성합니다.

00 : 00 : 03.760-> 00 : 00 : 03.960
이

00 : 00 : 03.960-> 00 : 00 : 04.160
이 프로그램

00 : 00 : 04.160-> 00 : 00 : 04.400
이 프로그램은

00 : 00 : 04.400-> 00 : 00 : 04.600
이 프로그램은

00 : 00 : 04.600-> 00 : 00 : 04.840
이 프로그램은 자막으로 표시됩니다 .

이 스타일의 캡션은 선택 윤곽 효과를 생성하지만 최대 수 메가 바이트 크기의 캡션 파일을 생성하는 의도하지 않은 부작용이있을 수 있습니다. 플레이어에서 이러한 캡션을 선택하면 플레이어는 구문 분석 및 표시를 위해 전체 파일을 다운로드하려고 시도합니다 (VTT 캡션은 스트리밍 할 수 없음). 이로 인해 플레이어의 성능 문제가 발생할 수 있습니다. OutOfMemory오류.

Brightcove는 이러한 캡션을 더 적은 줄로 다시 포맷 할 것을 권장합니다.

00 : 00 : 03.760-> 00 : 00 : 04.840
이 프로그램은 자막으로 표시됩니다 .

타사 프레임 워크

Brightcove는 Brightcove Native SDK를 Xamarin, React Native 및 Titanium과 같은 타사 개발 프레임 워크와 통합하기위한 지원을 테스트하거나 제공하지 않습니다. 통합 지원은 프레임 워크 제공 업체에 문의하세요. 다음은 발생할 수있는 몇 가지 문제입니다.

  • Android 용 Brightcove Native SDK를 Titanium 프레임 워크와 함께 사용할 때 DRM 콘텐츠에서 재생 오류가 발생할 수 있습니다. 이는 Titanium 프레임 워크가 기본값을 재정의하기 때문입니다. Java.net.ResponseCache 자체TiResponseCache .

에뮬레이터 사용

Android Studio 에뮬레이터를 사용하든 Xcode 시뮬레이터를 사용하여 동영상 재생을 테스트하든 에뮬레이터는 실제 기기의 성능을 정확하게 나타내지 않습니다. 개발 중에 초기 테스트에는 에뮬레이터를 사용할 수 있지만 정확한 결과를 얻으려면 실제 장치를 사용하는 것이 가장 좋습니다.

크기가 매우 작은 동영상

매우 작은 크기 (50px 미만)의 비디오 변환은 iOS 또는 Android (SDK 플레이어 또는 기타)에서 재생되지 않습니다.

안드로이드용 네이티브 SDK

360 ° 동영상

  • 사용하지 않는 경우 BrightcovePlayer 360 ° 동영상이 재생되지만 일시 중지했다가 다시 시작할 때 앱이 충돌 할 수 있습니다. 이 클래스 사용에 대한 자세한 내용은 BrightcovePlayer 클래스 이해문서.
  • 장치를 회전 한 후 약간의 비디오 드리프트가 발생할 수 있습니다. 문제는 장치 자이로 스코프를 보정하는 방법과 관련이 있으며 성능에 영향을 미칠 수 있습니다. 특정 장치 제조업체 및 모델과 관련이 없지만 대신 장치에 설치된 모션 센서 하드웨어에 연결됩니다. 최신 Android OS에는 문제를 해결하기 위해 더 정교한 필터 알고리즘이 있습니다. 간단한 해결 방법은 평평하고 안정된 표면에 누워서 장치를 끄고 켜는 것입니다.

안드로이드 12

  • Android 12에서는 특정 기기 (예: Google Pixel 휴대폰) 에서 플레이어를 완전히 백그라운드하지 않고 작업 목록으로 이동해도 재생이 일시 중지되지 않고activityPaused이벤트가 발생하지 않습니다. 또한 작업 목록에서 플레이어를 포그라운드해도activityResumed이벤트가 발생하지 않습니다. 이 동작에 대한 버그가 Google에 공개되었습니다.

자막

  • 세그먼트 데이터에 있을 수 있는 형식 없이 608/708 캡션이 플레이어에 표시되는 캡션 지원에는 알려진 제한이 있습니다. 이 문제는 SDK의 향후 업데이트에서 해결될 예정입니다.
  • 매니페스트 내 및 608/708 캡션은 활동 수명 주기 이벤트 후에 자동으로 표시되지 않습니다.

    이는 플레이어가 배경에 있다가 다시 전경으로 돌아올 때 발생할 수 있습니다. 캡션을 표시하는 해결 방법은 캡션 메뉴에서 캡션을 다시 선택하는 것입니다.

  • 특정 라이브 스트림 인코더(예: Elemental)에는 플레이어 디스플레이에 현재 스트림 시간을 표시하는 타임코드 번인 기능이 있습니다. 이 번인은 608 형식을 가질 수 있으며 스트림에 캡션이 없을 때 캡션(CC) 버튼이 표시될 수 있습니다. 현재 해결 방법은 없지만 향후 SDK 릴리스를 위한 솔루션을 조사할 예정입니다.

크롬캐스트

  • Native SDK는 Brightcove Cast Receiver 앱을 사용한 Chromecast 대기열을 지원하지 않습니다.

콘텐츠

  • 비디오 및 재생 목록 개체는 완전히 Parcelable하지 않습니다.

    객체는 Android Binder를 통해 전송되기 위해 완전히 Parcelable이어야 합니다. 이에 대한 한 가지 일반적인 예는 의도에 개체를 추가하여 다른 활동 또는 서비스로 보내거나 savedInstanceState 번들에 저장하는 것입니다. 현재 Android SDK의 Video 및 Playlist 개체는 완전히 Parcelable하지 않습니다.

DRM

  • 일부 플랫폼의 DRM 레이어는 미디어 콘텐츠를 해독하지 못할 수 있습니다. 해당 플랫폼의 결정적인 문제는 아니지만 테스트 결과 이 문제는 Nexus 클래스 장치에서 더 자주 발생하는 것으로 나타났습니다. 이 문제는 Android SDK 및 ExoPlayer의 범위를 벗어나며 해결할 수 없습니다.

라이브 스트림

  • Native SDK는 DASH Live 스트림을 지원하지 않으며 HLS Live 스트림이 포함된 광고도 지원하지 않습니다.

오프라인 재생

  • 절전 모드로 전환하거나 전원 버튼을 사용하여 기기가 잠겨있을 때 다운로드 지원을 추가하려면 다음 권한을 AndroidManifest.xml파일 :
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  • Android 8.0 이상에서는 앱이 백그라운드로 이동했을 때 전원 설정을 관리 할 수 있습니다. 이로 인해 장치가 전원에서 분리되면 다운로드 프로세스가 중지 될 수 있습니다. 대부분의 경우 앱을 포 그라운드로 되 돌리면 다운로드가 계속됩니다. 전원 관리는 OS 및 공급 업체에 따라 다를 수 있습니다. 따라서 Android 용 Brightcove Native SDK는 전원 관리와 관련된 설정을 관리하거나 재정의하지 않습니다.
  • Widevine Modular를 Android 8.0.0 (일부 장치에서는 8.1.0)과 함께 사용하는 경우 대여 라이선스를 취득 할 때 이미 만료되었음을 알 수 있습니다. 이것은 Widevine Modular CDM의 알려진 문제이며 Brightcove Android SDK 또는 ExoPlayer에서 해결할 수 없습니다. 이 문제는 Android 8.1.0을 사용하는 대부분의 기기에서 재현 할 수 없지만 Android 8.0.0 또는 8.1.0을 사용하는 기기에 대해서는 해결 방법이 없습니다.
  • Android 5.x 기기에서만 관찰됩니다. Widevine 라이선스를 해제 할 때OfflineLicenseManager.releaseLicense 방법, a MediaDrmStateException 오류가 발생합니다.
  • 에서 OfflinePlaybackSampleApp , Widevine 라이선스 만료 기간은 두 가지입니다.

    • absoluteExpiration다운로드 한 비디오의 재생을 시작하기위한 라이센스의 만료 날짜입니다.
    • playDuration비디오를 재생할 수있는 시간입니다

    언제playDuration 60 초 미만이되면 Widevine CDM은 라이센스가 만료 된 것으로 처리하고키 요청을 가져 오지 못했습니다.오류. 이 Widevine 라이선스 예외로 재생이 시작되지 않습니다.

    Android v6.1.0 + 용 Brightcove Native SDK를 사용하여AbstractOfflineCatalog.requestRentalLicense(Video, Date, long, EventListener)또는AbstractOfflineCatalog.requestPurchaseLicense(Video, EventListener)새 라이센스를 검색합니다. 참고: 새 라이센스를 얻으려면 장치가 온라인 상태 여야합니다.

로컬 비디오 재생

  • 응용 프로그램 리소스 폴더 (/ res / raw)에 저장된 MP4 비디오를 재생하려고하면 예외 오류가 발생합니다. 해결 방법은 로컬 비디오를 재생하려는 경우 MP4 비디오를 응용 프로그램 자산 폴더로 이동하는 것입니다.

DRM 및 명확한 콘텐츠가 포함된 재생 목록

  • Android용 Native SDK v6.17.0 이상에서 Brightcove는 암호화된 콘텐츠와 일반 콘텐츠가 모두 포함된 재생 목록의 문제를 인식하게 되었습니다. 사용자가 암호화된 비디오를 재생하는 도중이나 재생한 후에 선명한 비디오를 선택하면 SDK가 를 반환합니다IllegalStateException . 이는 플레이어가 명확한 콘텐츠를 위해 암호화된 코덱을 사용할 수 없기 때문입니다.

    현재 Brightcove는 다음 해결 방법을 제안합니다. 오류를 방지하려면 재생 목록 보기와 별개인 활동에 플레이어를 배치할 수 있습니다. 재생 목록에서 새 동영상을 선택하면 재생 목록에서 일반 동영상이든 암호화 동영상이든 관계없이 기존 플레이어 활동이 삭제되고 새 플레이어 활동이 생성됩니다. 이 워크플로는 새 코덱 리소스로 새 ExoPlayer 인스턴스를 만듭니다.

소스 선택

  • 동영상에 WebVTT 캡션/자막용 HTTP 및 HTTPS 소스가 모두 있는 경우 Android용 네이티브 SDK에서 HTTPS 버전을 반환하지 않을 수 있습니다. 브라이트코브는 이러한 상황을 인식하고 있으며 향후 릴리스에서 수정될 예정입니다.

자막

  • CC 버튼은 컨트롤 막대에 나타나지 않으며 Video Cloud Studio에서 비디오에 텍스트 트랙을 할당하고종류필드 값자막 . 해결 방법은종류필드 값캡션 닫기 Studio에서 텍스트 트랙을 할당 할 때.

  • 자막 / 오디오 설정이 전체 목록을 표시하기 위해 제공된 공간을 초과하면 Android TV에서 목록을 스크롤 할 수 없습니다. 목록은 Android 휴대폰 및 태블릿에서 스크롤 할 수 있습니다.

iOS용 네이티브 SDK

크롬캐스트

  • Native SDK는 Brightcove Cast Receiver 앱을 사용한 Chromecast 대기열을 지원하지 않습니다.

라이브 스트림

  • Native SDK는 HLS Live 스트림이 포함된 광고를 지원하지 않습니다.

오프라인 재생

  • iOS 12에서는kBCOVOfflineVideoManagerDisplayNameKey멀티 바이트 문자가있는 필드 값으로 인해 다운로드 오류가 발생할 수 있습니다. 멀티 바이트 문자는 더 긴 문자열 값으로 인코딩되고 iOS는 문자열 길이를 255 바이트로 제한하기 때문입니다. 이 문제는 Apple에보고되었습니다.
  • iOS 12에서는didProgress다운로드하는 동안 앱이 백그라운드에서 포 그라운드로 다시 시작되면 이벤트 실행이 중지 될 수 있습니다. 다운로드 상태가 더 이상 업데이트되지 않음을 알 수 있습니다. 이 문제는 Apple에보고되었습니다.
  • 동일한 오프라인 비디오를 연속으로 두 번 재생하려고하면 사용자에게 예기치 않은 네트워크 활동이 발생할 수 있습니다. 그만큼AVPlayer온라인 버전의 비디오 재생으로 전환 할 수 있습니다. 버그 보고서가 Apple에 제출되었습니다. 해결 방법 단계는동일한 오프라인 비디오를 두 번 재생참조 문서의 섹션.
  • 앱이 iOS 11.0 - 11.2를 대상으로 하는 경우 동시 다운로드를 권장하지 않습니다. 일시 중지 및 다시 시작 동작은 여러 동시 다운로드로 인해 신뢰할 수 없기 때문입니다. 이 문제는 iOS 11.3에서 수정되었습니다.