네이티브 플레이어 SDK를 사용한 오프라인 재생

이 항목에서는 브라이트코브 네이티브 플레이어 SDK에서 오프라인 재생이 어떻게 작동하는지 알아봅니다.

개요

iOS 및 Android용 Brightcove Native Player SDK를 통한 오프라인 재생을 통해 게시자는 완전히 새로운 방식으로 시청자에게 다가가면서 콘텐츠의 보안을 유지할 수 있습니다. 당사의 SDK는 다운로드 관리, 오프라인 카탈로그 관리, 분석, DRM 및 물론 재생을 포함한 복잡한 오프라인 재생 문제에 대해 강력하고 간단한 솔루션을 제공합니다.

오프라인 재생을 사용하면 사용자는 DRM으로 보호 된 비디오 콘텐츠와 암호화되지 않은 일반 비디오 콘텐츠를 모두 장치에 다운로드하고 연결되지 않은 상태에서 볼 수 있습니다.

요구 사항

Brightcove Native Player SDK는 다음 버전의 오프라인 재생을 지원합니다.

브라이트코브 네이티브 SDK 버전

  • Android 7.0.1 이상용 네이티브 SDK
  • iOS 6.0.1 이상용 네이티브 SDK

디바이스 OS 버전

  • 안드로이드 5.0+
  • iOS 10.0 이상 (10.3 이상 권장)

설정

시작하려면 다음을 수행하십시오.

  • 오프라인 재생을 위해 계정을 활성화하려면 계정 관리자에게 문의하십시오.
  • 비디오를 수집 할 때 Dynamic Delivery를 사용해야합니다.
  • 다운로드를활성화하려는 각 비디오를 준비하십시오.

콘텐츠 전달

스트리밍 비디오는 소스에서 대역폭을 감지하고 장치에 최상의 품질을 제공하는 Video Cloud의 다중 비트 레이트 스트리밍 기능을 활용합니다. 오프라인 재생 기능은 다음 스트리밍 유형을 지원합니다.

  • 안드로이드 : DASH (Dynamic Adaptive Streaming over HTTP)
  • iOS : Apple HTTP Live Streaming (HLS)

변환 다운로드됨

어떤 렌디션이 다운로드되어 오프라인 재생에 사용되는지 궁금할 수 있습니다. 답은 다음과 같습니다.

  • Android - ExoPlayer가 기본 변환을 설정합니다. 현재 연주를 찾으려면 해당ExoPlayerVideoDisplayComponent.RENDITION_CHANGED이벤트를 들어보세요.

    내부적으로 Android용 Native SDK는 DefaultTrackSelector 를 사용합니다. 다음과 같이 최대 비트 전송률을 설정할 수 있습니다.

    VideoDisplayComponent: videoDisplayComponent.setPeakBitrate(yourPeakBitrate);

  • iOS - 다운로드에 대한 비트 전송률을 지정하지 않으면 비디오 트랙이 있는 가장 낮은 변환을 얻게 됩니다.

    비트 전송률 또는 해상도를 기반으로 특정 변형을 선택하려면 SDK 참조의 변형 비트 전송률 지정 섹션을 참조하십시오.

보안

다운로드 한 콘텐츠의 보호는 당사의 오프라인 솔루션으로 가장 중요합니다. Brightcove 네이티브 플레이어 SDK는 콘텐츠가 뷰어의 장치에 안전하게 저장되도록 다음 기능을 제공합니다.

DRM 보호 컨텐츠

  • DRM으로 보호되는 콘텐츠의 경우 Native SDK는 다음 기술을 사용합니다.
  • 동영상 콘텐츠는 콘텐츠를 다운로드 한 기기 및 앱에서만 시청할 수 있습니다.

  • 비디오 콘텐츠는 특정 날짜와 시간이 만료 될 때까지만 시청할 수 있습니다.

    네이티브 SDK를 통해 사용자는 동영상을 대여하거나 구매할 수 있습니다. 만료는 대여에 적용되며 동영상 다운로드를 위해 Native SDK API를 사용하는 DRM 라이선스에서 설정됩니다. 반대로 Fastly 토큰에 설정된 만료는 스트리밍 콘텐츠에 적용됩니다.

  • 클라이언트에 반환 된 비디오 URL은 다른 사용자가 사용할 수 없도록 만료됩니다.

모든 콘텐츠

  • 앱이 삭제되면 다운로드된 모든 콘텐츠가 제거됩니다.
  • 앱은 언제든지 로컬에 저장된 콘텐츠를 삭제할 수 있습니다.

다운로드 관리

Brightcove 네이티브 플레이어 SDK는 콘텐츠를 뷰어 장치로 다운로드하는 복잡성을 처리하여 네이티브 애플리케이션의 프로세스를 크게 단순화합니다.

기능성

다운로드 관리를 지원하기 위해 다음 기능을 앱에 추가 할 수 있습니다.

콘텐츠 표시

스트리밍 또는 다운로드 할 수있는 콘텐츠 목록을 표시합니다.

동영상offline_enabled속성을 true로 설정하면 Native SDK가 이 동영상을 다운로드 가능으로 표시합니다.

비디오 준비

비디오를 다운로드 가능으로 표시하려면 다음을 수행해야합니다.

  1. 아직 수행하지 않은 경우 계정 관리자에게 문의하여 계정에서 오프라인 재생을 활성화하십시오.
  2. 다운로드 할 각 비디오에 대해 다음 중 하나를 수행하여 오프라인 사용을 설정하십시오.

    비디오 클라우드 스튜디오 사용

    비디오 클라우드 스튜디오를 사용하여 오프라인 재생을활성화합니다.

    오프라인 사용
    오프라인 사용

    CMS API 사용

    CMS API를사용하여 offline_enabled필드를 true로 설정할 수도있습니다.

    다음은 curl을 사용하는 예입니다.

      curl --header "Authorization: Bearer $oauth_token" --request PATCH --data '
      {"offline_enabled" : true}
      ' https://cms.api.brightcove.com/v1/accounts/your account id/videos/your video id
콘텐츠 표시
콘텐츠 표시

명확한 콘텐츠로 작업할 때는모범 사례섹션에서 콘텐츠를 표시하는 방법에 대한 팁을 참조하세요.

다운로드 크기 확인

Brightcove는 다운로드를 요청하기 전에 다운로드를위한 장치 저장소에 충분한 공간이 있는지 확인할 것을 권장합니다. 비디오 다운로드의 총 크기를 추정하려면 다음 단계를 따르십시오.

  • iOS의 경우 다음에서 정보를 검토하십시오. 다운로드 크기 확인의 섹션오프라인 재생을 위한 iOS 앱 개발자 가이드 .
  • Android의 경우 OnDownloadStarted콜백에서 견적을 확인할 수DownloadEventListener있습니다. 다음은 이벤트 리스너를 설정하는 방법의 예입니다.

      MediaDownloadable.DownloadEventListener downloadEventListener = new MediaDownloadable.DownloadEventListener() {
      //Your implementation.
      }
      OfflineCatalog catalog = new OfflineCatalog(context, eventEmitter, accountId, policyKey);
      catalog.addDownloadEventListener(downloadEventListener);

 

로컬 저장 공간 표시

현재 항목 및 대기열의 항목 다운로드를 완료하기에 충분한 로컬 저장소가 없을 때 사용자에게 알립니다.

SDK는 다운로드를위한 충분한 공간이 있는지 확인할 수 있도록 예상 크기와 진행률을 제공합니다.

다운로드 상태 표시

상태와 함께 현재 다운로드를 표시합니다.

총 예상 크기, 현재 다운로드 상태 및 다운로드 진행률 정보가 SDK에 의해 반환됩니다.

다운로드 관리

여러 비디오 다운로드

네이티브 SDK를 사용하면 여러 동영상을 다운로드 대기열에 넣을 수 있습니다. 예를 들어 사용자는 한 시즌의 여러 에피소드를 다운로드 할 수 있으며 Native SDK는 각 자산에 대한 다운로드 상태를 제공하여 프로세스를 관리합니다.

보조 트랙 다운로드 (iOS)

iOS 13을 통해 Apple은 다운로드 작동 방식을 변경했습니다. 자세한 내용은 비디오 다운로드 및 오프라인 재생에 대한 iOS 앱 개발자안내서를 참조하십시오.

이러한 변경으로 인해 iOS 오프라인 다운로드 샘플 앱이 여러 오디오 트랙이있는 비디오를 다시 다운로드하는 것처럼 보일 수 있습니다. 이는 각 트랙마다 다운로드 진행률이 제공되기 때문입니다. 따라서 오디오 트랙이 추가될 때마다 진행률 표시줄이 0부터 다시 시작됩니다.

다음은 자막 및 대체 오디오 트랙에AVMediaSelectionOptions대한 간략한 개요입니다. 자막 및 대체 오디오 트랙 추가

총 다운로드 결정

하나의 비디오 토큰으로 전체didProgressTo다운로드를 받을 수 있는 방법이 있나요?

아니요. 비디오 오프라인 토큰의 경우 집계 된 다운로드 진행률 값이 없습니다. 앱 개발자는 발생할 자산 다운로드 수를 결정합니다. 첫 번째 자산 다운로드는 기본 비디오와 선호하는 오디오 및 텍스트 트랙입니다. 일반적으로 가장 큰 다운로드이며 진행률은 0.00에서 100.00으로 진행됩니다.

다운로드 요청에 추가 미디어 선택 (앱 개발자가 명시 적으로 요청)이 포함 된 경우 총 다운로드 시간은 단순히 기본 비디오 및 선호하는 미디어 선택과 각 추가 미디어 선택의 시간입니다. UI에서 전체 진행률을 표시 할 때 모든 다운로드의 합계가 100 %가되도록 각 다운로드의 배율 값을 선택하고 각 미디어 선택의 확장 된 다운로드 시간을 합산합니다.

개체 유형 식별

didProgressTo이벤트와 관련된 객체 유형 (비디오 또는 텍스트 트랙) 을 식별할 수 있는 방법이 있습니까?

예. 추가 다운로드는 트랙이 아닌 Apple 미디어 선택 옵션 객체 ( AVMediaSelectionOption ) 입니다. 다운로드중인 미디어 선택 개체는 진행 콜백에서 식별됩니다. ( BCV 오프라인 비디오 매니저 대리인.h )

Apple은 미디어 선택 옵션의 속성을 검사하는 방법을 제공합니다. 자세한 내용은 Apple의 AV미디어 선택 옵션을 참조하십시오 .

OfflinePlayer 샘플 앱을 실행할 때 Xcode 디버거 콘솔에서 메타데이터 값을 볼 수 있습니다 (두 가지 영어 옵션에 현혹되지 마세요. 샘플 앱일 뿐입니다).

OfflinePlayer[523:355259] AVMediaSelection option 0 | legible display name: English
OfflinePlayer[523:355259] AVMediaSelection option 0 | audible display name: English
OfflinePlayer[523:355259] AVMediaSelection option 1 | legible display name: English
OfflinePlayer[523:355259] AVMediaSelection option 1 | audible display name: English

다운로드 관리자 코드에서 어떻게 수행되는지 확인할 수있습니다.

다운로드 일시 중지 / 재개 / 취소

사용자가 콘텐츠 다운로드를 일시 중지, 재개 또는 취소 할 수 있습니다.

다운로드 기능은 사용자가 일시 중지 / 재개하거나 다운로드가 중단 된 경우 중단 된 부분부터 다시 시작됩니다. 예를 들어, 다운로드 중에 Wi-Fi 연결이 끊어지면 다시 연결될 때 중단 된 지점에서 다시 시작됩니다.

비디오 다운로드를 취소하면 진행 상황이 지워집니다.

로컬 카탈로그 관리

Brightcove Native Player SDK는 다운로드 한 로컬 콘텐츠 관리 프로세스를 단순화합니다.

로컬 카탈로그 관리를 지원하기 위해 다음 기능을 앱에 추가 할 수 있습니다.

다운로드 한 콘텐츠 표시

각 프로그램 / 시즌에 대해 다운로드 한 모든 에피소드를 표시합니다.

SDK는 다운로드 한 모든 콘텐츠에 대한 메타 데이터 및 재생 세부 정보를 반환합니다. 이 메타 데이터에는 비디오 제목, 설명, 미리보기 이미지, 사용 가능한 캡션, 사용 가능한 오디오 트랙 등이 포함됩니다.

다음과 같은 오프라인 재생과 관련된 새로운 메타 데이터 속성이 있습니다.

DRM 보호 컨텐츠

  • 토큰 식별자
  • 라이센스 만료일

모든 콘텐츠

  • 시작 및 종료 시간 다운로드
  • 파일 URL과 함께 다운로드 된 썸네일 이름
  • 파일 URL과 함께 다운로드 한 포스터 이름
  • 비디오 번들의 상대 및 파생 파일 URL

그런 다음 특정 구현에 대한 결과를 필터링 할 수 있습니다.

로컬 콘텐츠 삭제

사용자가 로컬 저장소에서 콘텐츠를 삭제할 수 있도록 허용합니다.

SDK는 메타 데이터 및 관련 자산과 함께 비디오를 삭제하는 방법을 제공합니다.

콘텐츠 재생

네이티브 SDK를 사용하면 다음 상황에서 콘텐츠를 재생할 수 있습니다.

  • 다운로드하는 동안 비디오를 재생합니다.
  • 다운로드 후 비디오를 재생하십시오. 다운로드 한 콘텐츠는 장치가 오프라인 또는 온라인 일 때 로컬로 재생할 수 있습니다. 오프라인 비디오는 로컬 스토리지에서만 재생할 수 있습니다.
  • 온라인 버전의 비디오를 스트리밍하기로 선택한 경우 재생 서비스에서 새 비디오 개체를 검색해야합니다.

분석 도구

오프라인 흐름과 관련된 데이터를 측정하기 위해 분석이 도입되었습니다. 자세한 내용은 Native SDK를 사용한 오프라인 재생 관련분석문서를 참조하십시오.

샘플

다음 표에는 오프라인 재생을 시작하는 방법을 보여주는 코드 샘플 링크가 포함되어 있습니다.

샘플 애플리케이션 설명
iOS 오프라인 재생 FairPlay 암호화로 보호되는 비디오를 포함하여 HLS 비디오를 다운로드하고 재생합니다. 개발자 세부 정보는 오프라인 재생을 위한 iOS 앱 개발자 안내서를 참조하십시오 .
Android 오프라인 재생 Widevine 암호화로 보호되는 비디오를 포함하여 DASH 비디오를 다운로드하고 재생합니다.

자주하는 질문

아래에서 몇 가지 일반적인 질문에 대한 답변을 찾을 수 있습니다.

DRM 보호 컨텐츠

사용자가 만료 날짜를 무시하도록 시스템 시계를 변경할 수 있습니까?

안드로이드 : 절대 만료는 라이센스가 유효한 날짜와 시간을 결정합니다. 이는 Widevine 및 Android DRM 레이어에 의해 시행됩니다. 이론적으로 Android의 DRM 레이어는 사용자가 만료 기간을 우회하지 못하도록해야합니다. 발견된 모든 문제는 Android OS 출시 노트에 설명되어 있습니다.

iOS : 라이선스 만료는 FairPlay에 의해 시행됩니다. iOS는 시계 변경 등의 모든 검사를 처리합니다. 앱에는 라이선스 만료를 확인하여 사용자에게 라이선스가 만료되었음을 알리는 옵션이 있습니다. 만료 된 비디오를 재생 한 다음 재생 오류를받는 것보다이 방법이 더 나을 수 있습니다.


앱이 백그라운드에있는 동안 라이선스와 오프라인 동영상이 계속로드 되나요?

안드로이드 : 예. 일반적으로 라이선스는 즉시 다운로드되지만 앱이 백그라운드된 상태에서도 라이선스를 다운로드할 수 있습니다.

iOS : 라이센스로드는 포 그라운드에서 발생해야합니다. 라이선스를 미리 로드하는방법이있습니다. 앱이 백그라운드에있는 동안 기본 비디오 콘텐츠를 다운로드 할 수 있습니다.

모든 콘텐츠

오프라인 콘텐츠 다운로드에 사용되는 비디오 형식은 무엇입니까?

안드로이드 : DRM으로 보호되는 대시 또는 암호화되지 않은 대시

iOS : HLS 김. 특정 변형을 사용하기 위해 다운로드에 대한 전송률을 지정할 수 있습니다.


사용자가 온라인 상태 일 때 다운로드 한 비디오가 로컬로 재생되거나 스트리밍됩니까?

다운로드 한 비디오는 온라인 또는 오프라인에서 재생할 수 있지만 항상 다운로드 한 비디오를 사용합니다. 온라인 버전의 비디오를 재생하도록 선택하는 경우 재생 서비스에서 새 비디오 개체를 검색해야합니다. 오프라인 비디오는 로컬 스토리지에서만 재생할 수 있습니다.


모범 사례

다음 지침은 오프라인 재생 용 앱을 개발할 때 도움이 될 것입니다.

일시 중지 / 취소 버튼 표시

비디오 다운로드가 시작되면 일시 중지 및 취소 버튼이 표시되어야합니다.

안드로이드: onDownloadStarted콜백을 호출하는 과정에서 일시 중지 및 취소 버튼을 표시해야DownloadEventListener합니다. 자세한 내용은오프라인 재생 샘플 앱을 참조하십시오 .

iOS: 오프라인 재생용 앱을 만드는 방법에 대한 자세한 내용은 iOS 앱 개발자 안내서를 참조하십시오 .

명확한 내용 표시

계정이 DRM을 지원하지 않거나 일반 콘텐츠로 작업하는 경우 Brightcove 네이티브 SDK는 서버 측 라이선스 요청을 수행하지 않습니다. 따라서 명확한 콘텐츠는 대여 또는 구매가 가능한 것으로 간주되지 않습니다. 대부분의 경우 명확한 콘텐츠를 위해대여구매버튼을 숨기고 대신 단일다운로드버튼을 표시하는 것이 좋습니다.

기능 활성화

가격에 대해 알아보고 계정에 대한 오프라인 재생 기능을 활성화하려면 계정 관리자에게 문의하십시오.

문제 해결

다음 팁은 비디오를 다운로드 할 때 문제를 조사하는 데 도움이 될 수 있습니다.

사용자가 느린 네트워크로 인해 장치가 처리 할 수있는 것보다 높은 비트 전송률로 자산을 다운로드하려고하면 오류가 발생할 수 있습니다.

이를 방지하기 위해 코드를 추가하여 장치 기능을 확인하고 연결 속도가 느린 장치가 높은 비트 전송률 자산을 다운로드하지 못하도록 할 수 있습니다. 연결을 조절하면서 실제 장치로 테스트하고 Charles 프록시도구를 사용하여 네트워크 트래픽을 볼 수 있습니다.

Android

오류 처리에 대한 자세한 내용은 Android용 네이티브 SDK의오류 메시지문서를 참조하세요. 여기에는 오프라인 재생과 관련된 오류 메시지가 포함됩니다.

iOS

오류 처리에 대한 자세한 내용은 iOS용 Native SDK를 사용한오류 처리문서를 참조하십시오.

오프라인 재생 코드가 오류를 수신하면이를 포착하고 NSError를 발생시킵니다. 근본적인 오류를 얻으려면 다음을 시도하십시오.

  NSError *underlyingError = initialError.userInfo[NSUnderlyingErrorKey];

자세한 내용은 오프라인 재생을 위한 iOS 앱 개발자 안내서를 참조하십시오 .

알려진 문제

네이티브 SDK를 사용한 오프라인 재생에 영향을 미치는 Android 및 iOS 운영 체제의 알려진 문제 목록은알려진 문제지원 문서를 참조하세요.

참고 및 제한 사항

다음 참고 사항은 Native SDK에서 지원하는 오프라인 재생 기능에 적용됩니다.

광고하는

오프라인 재생에서는 클라이언트 측 광고와 서버 측 광고가 모두 지원되지 않습니다.

HLSe

Android, iOS 또는 tvOS용 Brightcove Native SDK를 사용하는 오프라인 재생에서는 HLSe 콘텐츠가 지원되지 않습니다.

저전력 모드

장치의 저전력 모드는 다운로드를 포함한 특정 기능에 영향을 미칠 수 있습니다. 자세한 내용은 다음을 참조하십시오.

공유 동영상

공유 비디오는 원본 비디오가 가능한 경우에만 오프라인으로 볼 수 있도록 다운로드할 수 있습니다. 속성은 원본 비디오에서 상속되며 공유 비디오에 대해서만 변경할 수 없습니다.

오디오 전용

Native SDK는 오프라인 재생을 통해 오디오 전용 콘텐츠를 지원합니다. 포스터 이미지이든 사용자 지정 화면이든 시청자가 보는 것을 제어 할 수 있습니다.

Android용 네이티브 SDK에는VideoView a가 필요하고 iOS용 네이티브 SDK에는 a가 필요합니다UIView . 따라서 백그라운드 오디오는 지원되지 않습니다. 즉, 사용자가 앱을 백그라운드로 보낼 때 오디오가 계속 재생되지 않습니다.

안드로이드: 앱 삭제

앱이 삭제되면 다운로드된 모든 콘텐츠가 제거됩니다. 기본 저장 위치가 재정의되지 않는 한 마찬가지입니다.

iOS: AirPlay

보안 기능으로 오프라인 HLS 비디오를 AirPlay 장치로 스트리밍하여 재생할 수 없습니다. 이는 Apple에 의해AVFoundation제한 사항으로 확인되었습니다.