Apple FairPlay 연동
iOS, iPadOS, tvOS, Safari에 DRM-X 6.0 FairPlay Streaming을 통합, Swift, AVFoundation, SPC 및 CKC 교환을 사용하여, 안전한 서버 권한.
통합하기 전에 FairPlay 등록 #
설정하기 FairPlay 배포 및 인증서 자료 in DRM-X 콘솔. 개인 키 자료는 암호화 및 서버 측에 남아 있습니다. 게시 HLS/CBCS 변종을 위한 Content ID 테스트 계획.
Apple session#을 요청하십시오.
drmSystem: fairplay, manifestTypes: ["hls"] 및 인증 된 백엔드에서 적절한 clientPlatform을 보내십시오. 응답은 등록 된 HLS 표시, 인증서 경로, CKC 라이센스 경로, 승인 지침 및 릴리스 경로를 제공합니다.
AVFoundation 순서#
- 인증서를로드하십시오. 는 반환된 FairPlay 인증서 URL에서 반환된 복제 된 권한으로 가져옵니다.
- 제휴 내용 키 데이터.
skd://식별자 HLS 재생 목록 및 응용 프로그램 인증서에 의해 공급. - Send the SPC.POST 정확한 SPC 바이트 에 반환된 라이센스 URL와 허용 정확한 CKC 바이트.
- Finish and release.내용 키 요청에 응답한 후, 종료시 DRM-X 세션을 실행합니다.
Safari 및 응용 프로그램 합격 #
- iPhone 및 iPad Safari을 기본 HLS FairPlay으로 테스트하십시오.
- macOS Safari 자격을 갖춘 Shaka MSE FairPlay을 테스트하십시오. 여기서 사용 가능하고 기본 HLS의 fallback.
- 기본 iOS, iPadOS 및 tvOS 재생, AirPlay 정책, AV 어댑터 정책, 배경 전환, 갱신 및 출력 변경을 테스트합니다.
- 다른 개발 및 생산 사용 FairPlay 배포 및 인증 정보.
iOS, iPadOS 및 tvOS 기본 FairPlay #
더 많은 정보 Swift 패키지 대상 iOS 이름 * tvOS 15+. 그것은 사용합니다 AVFoundation’s AVContentKeySession 제품정보 FairPlay 콘텐츠 키 요청, 인증서 retrieval, 바이너리 SPC/CKC 교환, 갱신, 취소 및 세션 릴리즈.
import AVKit
import DrmXFairPlay
let controller = DrmXFairPlayPlayer()
let player = try await controller.prepare(
endpoint: URL(string: "https://customer.example/api/drmx/playback-session")!,
contentId: "course-12-lesson-4",
contentType: .vod,
customerHeaders: ["Authorization": "Bearer \(customerAccessToken)"]
)
playerViewController.player = player
player.play()
귀하의 백엔드는 정책 템플릿을 선택합니다. 정책에 넣지 마십시오. URL, Site Key, Access Key, 또는 앱 번들에서 장기간의 토큰을 나타낸다. 실제 HLS/CBCS 미디어를 물리적 iPhone, iPad 및 Apple TV 장치에서 테스트하십시오. HDMI 및 AirPlay 결정을 포함하여.
하나의 패키지, 세 가지 통합 선택#
Universal Player iOS/iPadOS, Universal Player tvOS, 또는 위의 네이티브 AVPlayer 통합. 모든 사용은 동일한 DrmXFairPlay 패키지 및 고객 재생 세션 엔드 포인트. 호스트 응용 프로그램은 고객 인증을 공급; tenant 인증 정보 귀하의 백엔드에 남아.
스트리밍 플레이어은 재생 목록, shuffle/repeat, cancellable auto-next, 이력서 위치, 찾고, 속도, 품질 선호도, 오디오 / 자막 선택, caption 노래, 책갈피, 선택적인 장/transcripts, A-B 루프, 수면 타이머 및 풀 스크린을 제공합니다. 레이아웃은 터치 스크린 및 Apple TV 리모트에 적합합니다.
let playlist = try DrmXPlaylist(items: [
DrmXPlaylistItem(contentId: "lesson-1", title: "Getting started"),
DrmXPlaylistItem(contentId: "lesson-2", title: "Next lesson")
])
let model = DrmXUniversalPlayer(
endpoint: URL(string: "https://customer.example/api/drmx/playback-session")!,
playlist: playlist,
storageNamespace: "your-tenant-and-viewer"
) {
["Authorization": "Bearer \(customerAccessToken)"]
}
// Retain the model with @StateObject or an owning coordinator.
DrmXUniversalPlayerView(model: model)
// Stop when the owning screen is actually dismissed.
model.stop()
품질 설정은 반환된 세션 천장 내에서 최대 선호 사항입니다. AVPlayer는 사용 가능한 대역폭에 적응합니다. FairPlay 라이센스 및 출력 제한은 권한이 유지됩니다. 재생 인증 정보을 저장하지 않고 고객/뷰어 네임스페이스에 의해 위치 및 북마크가 표시됩니다.
현재 개발 소스 장소 이전/Play-Pause/Next, CC, 설정 및 비디오 내부 전체 화면. 제어는 터치 또는 원격 상호 작용에 재생 및 반복하는 동안 두 초 후에 숨깁니다. 다운로드한 재생을 포함하여 공급한 고객/viewer 네임스페이스 내에서, 반복 및 VOD 진행률. 셔플과 반복으로, 큐는 최종 비디오 후 중지합니다.
iPhone 및 iPad에서 보호 된 다운로드
offlineEndpoint을 DrmXUniversalPlayer로 전달하여 다운로드 및 다운로드 - 비디오 모드를 활성화하십시오. iOS 구현은 HLS 패키지 및 AVContentKeySession의 로컬 FairPlay 키에 대한 AVAssetDownloadURLSession를 사용합니다. 그것은 opaque native 키와 Local metadata를 저장하고, 결코 DRM License Tokens 또는 clear 키가 없습니다. 다운로드는 customer/viewer namespace에 의해 격리됩니다. 오프라인 큐는 완료 된 카탈로그 항목과 공유 저장 된 위치, shuffle 및 온라인 오류가 필요합니다.
PHP 샘플은 fairplay/hls/ios 영구적인 요청을 지원합니다. 각 콘텐츠 항목의 신뢰할 수 있는 hlsManifestUrl 구성; 인증서 경로는 새로 발행된 토큰의 활성 배포를 사용합니다. FairPlay는 만료를 시행합니다. 오프라인 품질은 다운로드된 품질을 유지하며 캐시된 언어 트랙만 선택 가능합니다. tvOS는 스트리밍 플레이어을 사용합니다.
스크린 캡처 자격
iPad 사용 Apple TV 레이아웃, 재생 목록 제어, 설정 및 원격 탐색을위한 시뮬레이터. FairPlay 재생은 이 시뮬레이터에서 사용할 수 없습니다; SDK 이 제한을보고 지원되지 않은 네이티브 키 세션을 만드는 대신 예약을 해제합니다. 시뮬레이터 UI 결과는 보호된 재생, 오프라인 다운로드 지원, 또는 물리적 장치 합격을 설치하지 않습니다.
플레이어 pauses audio/video when iOS report active recording or mirroring and cover inactive scenes. 스크린 샷 알림 캡처 후 도착하고 이미 저장된 이미지를 redact 할 수 없습니다. 이전 샘플은 저장된 스크린 샷에 영화 픽셀 허용. 기본 AVPlayerViewController 프리젠 테이션으로 확장 된 플레이어를 설치 한 후, 사용자는 개발 iPhone에서 WayMaker screenshot/Photos 체크를 반복하고 비디오 영역을 확인했습니다. 다른 재생 상태, 장치, 기록, AirPlaypressController의 변경 사항 및 변경 전에.
DRM-X 6.0