2012-09-02 18 views
10

Estoy buscando implementar DRM en un reproductor de video de iOS, pero no estoy seguro de cómo implementarlo. Para implementar el DRM de video (mientras sigo usando la decodificación H264 acelerada por hardware de Apple), necesito una manera de alimentar el flujo H264 descifrado en las API de reproducción de video iOS estándar.Cómo implementar DRM de video en iOS

Según this question, no fue posible implementar DRM de terceros en septiembre de 2010. Hay un thread in the Apple Developer Forums que no lleva a ninguna parte. Sin embargo, a partir de hoy existen varias bibliotecas de DRM de terceros: Widevine, Irdeto (PDF), Marlin. Han encontrado una manera clara de pasar una transmisión personalizada al reproductor multimedia en las aplicaciones aprobadas por Apple.

He encontrado dos clientes potenciales. Una es una sugerencia al create a custom URL protocol, pero las personas parecen tener poco éxito al usar esto con video. El otro es crear un hilo de servidor HTTP local y proporcionar el contenido mediante transmisión en vivo HTTP en 127.0.0.1 dentro de iDevice. Me gustaría estar muy seguro de que Apple aprobará antes de seguir esa ruta.

Entonces, ¿qué API aprobadas por Apple utilizan las implementaciones de DRM de terceros para obtener datos de video descifrados en el reproductor de video?

Editar: latest BBC iPlayer for iOS permite que los programas se descarguen para su posterior visualización. O almacenan el contenido en claro, o han resuelto este problema.

+1

HTTP En cuanto a la transmisión en vivo en 127.0.0.1 te puedo decir que funciona y es aceptado por Apple. Las soluciones comerciales como Verimatrix usan este enfoque. –

+0

Gracias - No me había encontrado con Verimatrix antes, y lo agregaré a nuestra lista. –

+0

revise este artículo que escribí recientemente: http://aameer.github.io/articles/digital-rights-management-multi-drm/ explica en detalle sobre cómo lograr drdr múltiple – Aameer

Respuesta

2

Puede comenzar a descifrar el archivo en otro archivo y reproducir ese archivo mientras descifra. Deberás dejar que guarde en el búfer unos pocos segundos de video, pero funcionará.

Además, deberá asegurarse de que el átomo moov ANTERE el átomo mdat en el archivo; de lo contrario, no funcionará. (AVFoundation, por ejemplo, crea MP4 donde el átomo moov viene después del átomo mdat, por lo que tendrían que modificarse para funcionar)

+0

Gracias - Controlo la codificación, por lo que el orden interno del archivo debería ser sencillo. Eso me deja un par de problemas: si puedo manejar los intentos del usuario de buscar el video y qué hacer con el gran archivo descifrado en el sistema de archivos. No creo que iOS admita archivos dispersos, por lo que probablemente necesite dividir el video en fragmentos similares a HLS para que esto sea manejable. –

+0

Sí, no puedo decirle cuál es la solución correcta para su caso. Para buscar, probablemente puedas usar los subátomos del átomo 'stbl' para averiguar dónde en el archivo deberías descifrar y luego descifrar desde allí a un nuevo archivo. Creo que hacerlo bien será un ejercicio interesante para abusar del contenedor MP4. Probablemente también quiera evitar descifrar todo de una vez, pero puede evitarlo con bastante facilidad utilizando varios aassetreaders. – jgh

+0

. Creo que cada respuesta va a ser un truco, y recién comenzamos a considerar la arquitectura para Android. versión. Me sorprendió lo limitadas que se comparan estas API móviles con DirectShow. –

Cuestiones relacionadas