DRM-X 6.0 鸽子和橄榄枝标志DRM-X 6.0文档
◎ 简体中文

Apple FairPlay 集成

整合 DRM-X 6.0 FairPlay Streaming 打开 iOS, iPadOS, tvOS,以及 Safari 使用 Swift, AVFoundation, SPC 和 CKC 交换,并获得服务器的授权。

查看 Markdown现场实例更新2026-09-05
证书 – SPC 挑战 – CKC 回复 – 本地播放 。 保留二进制挑战和响应字节不变 。
证书 – SPC 挑战 – CKC 回复 – 本地播放 。 保留二进制挑战和响应字节不变 。
发展状况物理 iPhone 检查覆盖了受保护的下载, 本地恢复, 播放列表模式和续订 。 在 SDK HTTP 请求被屏蔽时, 测试传输程序也验证了本地播放内容; 设备 Wi- Fi 仍然在运行 。 在发布前, 认证完全断开的播放内容、 物理 iPad 设备以及您自己的内容/ 输出政策 。 软件包本地样本分发仍未完成 。 更新的 WayMaker HLS 主机和刷新 iPhone 下载程序已经验证了英文和中文的 WebVTT 字幕。 其他媒体需要自己兼容的字幕音轨。 这些 播放器 改进是开发的, 而不是新发布的客户 SDK 。

登记册 FairPlay 整合前#

在 DRM-X 控制台 中配置 FairPlay 部署和证书材料。 私有密钥材料仍为加密和服务器侧。 发布 HLS/CBCS 的变体, 您计划测试 Content ID 。

请求 Apple 会话#

发送 drmSystem: fairplay, manifestTypes: ["hls"],以及适当的 clientPlatform 从您认证的后端中获取。该响应提供了已注册的 HLS 显示, 证书路线, CKC 许可路线、授权指示和放行路线。

保留本地字节不要基质64变形, JSON-关闭或重新解释 SPC 和 CKC 数据,除非返回的合同明确要求。代理精确的二进制请求和响应类型。

AVFoundation 顺序#

  1. 装入证书 。从退货处拿回来 FairPlay 证书 URL 与返回的有限度的授权。
  2. 构建内容密钥数据.使用该 skd:// 标识符由 HLS 播放列表和应用程序证书。
  3. 发送 SPC.POST 准确 SPC 返回许可证的字节 URL 并接受准确的 CKC 字节。
  4. 完成并释放。响应内容键请求,然后释放 DRM-X 当视图结束时会话。

Safari 和应用程序的接受#

  • 测试iPhone和iPad Safari 与本地人HLS·FairPlay.
  • 测试 macOS Safari 合格人员 Shaka MSE FairPlay 现有和本地 HLS 倒计时
  • 测试本地 iOS,iPadOS 和tvOS 回放, AirPlay 政策,AV 适配器政策,背景过渡,更新,以及输出变化 。
  • 使用不同的开发与生产FairPlay部署和凭据.
苹果 SDK (韩语).

iOS, iPadOS,以及 tvOS 带有本地语言 FairPlay#

那个... Swift 一揽子目标 iOS 和 tvOS 15+. 该物质使用 AVFoundation’ ’ AVContentKeySession (单位:千美元) FairPlay 内容密钥请求, 包含证书检索, 二进制 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决定。

一个一揽子,三个整合选择#

使用( U) Universal Player (单位:千美元) iOS/iPadOS, Universal Player (单位:千美元) tvOS,或者上面的本地 AVPlayer 集成。所有都使用相同的 DrmX 。FairPlay 加密输出包和客户回放会话结束点。主机应用程序提供客户认证; 租户 凭据 留在你的后端。

流线播放器 提供播放列表、 洗牌/ 重播、 可取消的自动后缀、 恢复位置、 寻求、 速度、 质量偏好、 音频/ 字幕选择、 字幕大小、 书签、 可选章节/ 笔记、 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 许可证和输出限制仍然是权威的。 客户/ 查看者名片空间坚持位置和书签而不存储播放凭据 。

当前开发源将 Purpose/Play-Pause/Next, CC, 设置和全屏放置在视频中. 控制在播放后两秒钟后隐藏, 并在触摸或远程互动中重新出现. Shuffle, repeat andVOD 进度持续在所提供的客户/查看器命名空间中, 包括下载的播放。 随着播放的洗涤和重复, 队列在最后视频后停止 。

iPhone 和 iPad 上受保护的下载

通过一个认证 offlineEndpoint 改为: DrmXUniversalPlayer 以启用下载和下载视频模式。 iOS 执行用途 AVAssetDownloadURLSession 当地 HLS 加密输出包和 AVContentKeySession 用于装有设备的持久性 FairPlay 键。它存储不透明的本地密钥和本地元数据,永远不会 DRM License Tokens 或清除密钥。 下载被客户/ 查看器命名空间隔离。 离线队列包含已完成的目录项目和共享保存的位置、 洗牌和重复。 许可证续签需要新的在线授权; 删除只删除选中的下载 。

那个... PHP 样本支持 fairplay/hls/ios 持续请求。 配置每个内容的可信项 hlsManifestUrl;证书路由使用新发布的符号中的主动部署. FairPlay 执行过期。 离线质量仍然是下载质量, 只有缓存语言音轨可以选择 。 tvOS 使用流线 播放器.

屏幕抓取条件

使用 iPad 和 Apple TV 模拟器进行布局、 播放列表控制、 设置和远程导航 。 FairPlay 在这些模拟器中无法重播 。 SDK 报告此限制并发布其保留, 而不是创建不支持的本地密钥会话 。 模拟器UI 结果不会建立受保护的重播、 离线下载支持或物理破解接受 。

当 iOS 检测到正在录屏或镜像输出时,播放器会暂停音视频,并遮挡非活动场景。系统在截图完成后才发送通知,因此无法修改已经保存的截图。较早的示例曾在截图中保留视频画面。安装采用原生 AVPlayerViewController 展示的扩展播放器后,用户在开发用 iPhone 上重新测试了 WayMaker 截图,并在 Photos 中确认视频区域为黑色。发布前仍需分别验证其他播放状态、设备、录屏、AirPlay 和输出策略变更。