Integração Apple FairPlay
Integre DRM-X 6.0 FairPlay Streaming em iOS, iPadOS, tvOS e Safari usando Swift, AVFoundation, SPC e CKC troca, e obter autorização do servidor.
Registro FairPlay antes da integração#
Configure o material de implantação e certificado FairPlay em Console DRM-X. O material de chave privada permanece criptografado e do lado do servidor. Publique uma variante HLS/CBCS para o Content ID que você planeja testar.
Solicite a sessão da Apple#
Envie drmSystem: fairplay, manifestTypes: ["hls"] e o clientPlatform apropriado da sua infra- estrutura autenticada. A resposta fornece o manifesto HLS registado, rota do certificado, rota da licença CKC, instruções de autorização e rota de liberação.
AVFoundation sequência #
- Carregue o certificado. Obtenha-o do certificado FairPlay devolvido URL com a autorização limitada devolvido.
- Compilar dados da chave de conteúdo.Use o identificador
skd://fornecido pela lista de reprodução HLS e o certificado da aplicação. - Envie o SPC. POST exato SPC bytes para a licença devolvido URL e aceite exatamente CKC bytes.
- Termine e release.Responda à solicitação da chave de conteúdo, em seguida, solte a sessão DRM-X quando a visualização terminar.
Safari e aceitação da aplicação #
- Teste iPhone e iPad Safari com nativo HLS FairPlay.
- Ensaio macOS Safari com qualificação Shaka MSE FairPlay quando disponível e nativo HLS Recuar.
- Teste a reprodução nativa iOS, iPadOS e tvOS, política do AirPlay, política do adaptador AV, transições de fundo, renovação e alterações de saída.
- Use diferentes implantações de Desenvolvimento e Produção FairPlay e credenciais.
iOS, iPadOS, e tvOS com nativo FairPlay#
O pacote Swift destina-se a iOS e tvOS 15+. Ele usa AVFoundation para AVContentKeySession pedidos de chave de conteúdo FairPlay, com recuperação de certificados, troca binária SPC/CKC, renovação, cancelamento e liberação de sessão.
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()
Sua infraestrutura seleciona o modelo de política. Não coloque uma política, manifeste URL, Site Key, Access Key, ou token de longa duração no pacote de aplicativos. Teste mídia real HLS/CBCS em dispositivos físicos iPhone, iPad e Apple TV, incluindo decisões HDMI e AirPlay.
Um pacote, três opções de integração#
Use Universal Player para iOS/ iPadOS, Universal Player para tvOS, ou a integração nativa do AVPlayer acima. Todos usam o mesmo pacote DrmX FairPlay e o ponto final da sessão de reprodução do cliente. A aplicação da máquina fornece a autenticação do cliente; o inquilino credenciais permanece na sua infra- estrutura.
O streaming reprodutor oferece listas de reprodução, shuffle/repeat, cancellable auto-next, posições de currículo, buscando, velocidade, preferências de qualidade, seleção de áudio/subtítulo, dimensionamento de legendas, favoritos, capítulos/transcripts opcionais, loops A-B, temporizadores de sono e tela cheia. Seu layout se adapta aos ecrãs táticos e ao remoto 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()
As configurações de qualidade são preferências máximas dentro do teto da sessão retornada. O AVPlayer se adapta à largura de banda disponível; as licenças e restrições de saída FairPlay permanecem autoritárias. As posições e os favoritos persistem pelo espaço de nomes cliente/viewer sem armazenar a reprodução credenciais.
A fonte de desenvolvimento atual coloca Anterior/Reproduzir-Pausa/Próximo, CC, Configurações e tela cheia dentro do vídeo. Controles escondem-se após dois segundos durante a reprodução e reaparecem ao toque ou interação remota. Embaralhar, repetir e VOD o progresso persistir dentro do espaço de nomes do cliente / visualizador fornecido, incluindo a reprodução baixada. Com embaralhar e repetir, a fila pára após o seu vídeo final.
Transferências protegidas no iPhone e iPad
Passar um autenticado offlineEndpoint para DrmXUniversalPlayer para ativar o modo de download e download de vídeo. iOS Utilização da implementação AVAssetDownloadURLSession para local HLS embalagens e AVContentKeySession para a ligação do dispositivo persistente FairPlay chaves. Armazena chaves nativas opacas e metadados locais, nunca DRM License Tokens ou chaves claras. As transferências são isoladas pelo espaço de nomes cliente/ visualizador. A fila offline contém itens de catálogo completos e partilhas gravadas posições, embaralhamento e repetição. A renovação da licença requer autorização online fresca; a remoção apaga apenas o download seleccionado.
A amostra PHP suporta fairplay/hls/ios solicitações persistentes. Configure cada item de conteúdo hlsManifestUrl confiável; a rota do certificado usa a implantação ativa no token recém- emitido. FairPlay obriga à expiração. A qualidade off-line permanece a qualidade baixada, e apenas faixas de linguagem em cache são selecionáveis. tvOS usa o streaming reprodutor.
Qualificação da captura de tela
Use simuladores iPad e Apple TV para layout, controles de lista de reprodução, configurações e navegação remota. FairPlay A reprodução não está disponível nesses simuladores; o SDK relata esta limitação e libera sua reserva em vez de criar uma sessão de chaves nativas não suportadas. Os resultados do simulador UI não estabelecem reprodução protegida, suporte de download offline ou aceitação de dispositivos físicos.
O reprodutor pausa o áudio/ vídeo quando iOS relata gravação ativa ou espelhamento e cobre cenas inativas. Uma notificação de captura de tela chega após a captura e não consegue redigir uma imagem já salva. A amostra anterior permitiu pixels de filme em uma captura de tela salva. Depois de instalar o reprodutor expandido com a apresentação nativa do AVPlayerViewController, o usuário repetiu a verificação de captura de tela/Fotos do WayMaker no iPhone de desenvolvimento e confirmou que a área de vídeo era preta. Teste outros estados de reprodução, dispositivos, gravações, AirPlay e mudanças de política de saída separadamente antes da liberação.
DRM-X 6.0