2012-09-02 42 views
10

Szukam wdrożenia DRM w odtwarzaczu wideo iOS, ale nie jestem pewien, jak to zaimplementować. Aby zaimplementować wideo DRM (wciąż używając dekodowania H264 przyspieszanego sprzętowo Apple), potrzebuję sposobu na odesłanie odszyfrowanego strumienia H264 do standardowych interfejsów API odtwarzania wideo iOS.Jak zaimplementować wideo DRM w iOS

Zgodnie z this question, wdrożenie DRM innych firm nie było możliwe we wrześniu 2010 r. Jest to thread in the Apple Developer Forums, które nie prowadzi do nikąd. Jednak na dzień dzisiejszy istnieje wiele bibliotek DRM innych firm: Widevine, Irdeto (PDF), Marlin. Wyraźnie znaleźli sposób na przekazanie niestandardowego strumienia do odtwarzacza multimedialnego w aplikacjach zatwierdzonych przez Apple.

Znalazłem dwa tropy. Jedna jest sugestią do create a custom URL protocol, ale wydaje się, że ludzie mają słabe powodzenie, używając tego z wideo. Druga to utworzenie lokalnego wątku serwera HTTP i dostarczenie treści za pośrednictwem transmisji strumieniowej HTTP w wersji 127.0.0.1 wewnątrz iDevice. Chciałbym być bardzo pewny, że Apple zatwierdzi przed pójściem tą drogą.

A więc - jakie funkcje API zatwierdzone przez Apple wykorzystują implementacje DRM innych firm, aby uzyskać odszyfrowane dane wideo w odtwarzaczu wideo?

Edytuj: latest BBC iPlayer for iOS pozwala pobierać programy do późniejszego przeglądania. Albo przechowują treść w jasny sposób, albo rozwinęli ten problem.

+1

Odnośnie HTTP live stream na 127.0.0.1 mogę wam powiedzieć, że to działa i to jest akceptowane przez Apple. Rozwiązania komercyjne, takie jak Verimatrix, wykorzystują to podejście. –

+0

Dziękuję - wcześniej nie spotkałem Verimatrix, a dodam ją do naszej listy. –

+0

sprawdź ten artykuł, który napisałem niedawno: http://aameer.github.io/articles/digital-rights-management-multi-drm/ wyjaśnia szczegółowo, jak osiągnąć multi-drm – Aameer

Odpowiedz

2

Możesz rozpocząć odszyfrowywanie pliku do innego pliku i odtwarzać go podczas odszyfrowywania. Musisz pozwolić mu na buforowanie wideo o wartości kilku sekund, ale zadziała.

Dodatkowo musisz upewnić się, że atom moov jest PRZED atomem mdat w pliku, w przeciwnym razie nie zadziała. (AVFoundation, na przykład, tworzy MP4s, gdzie atom przychodzi po atomie mdat, a więc trzeba je zmodyfikować do pracy)

+0

Dzięki - Kontroluję kodowanie, więc wewnętrzna kolejność pliku powinna być prosta. Pozostaje mi kilka problemów - czy będę w stanie poradzić sobie z próbami poszukiwania przez użytkownika w filmie i co zrobić z dużym odszyfrowanym plikiem w systemie plików. Nie sądzę, że iOS obsługuje pliki rozrzedzone, więc prawdopodobnie będę musiał podzielić wideo na porcje podobne do HLS, aby to umożliwić. –

+0

Tak, nie mogę ci powiedzieć, jakie jest właściwe rozwiązanie w twoim przypadku. W celu poszukiwania prawdopodobnie można użyć atomów podrzędnych atrybutu 'stbl', aby znaleźć miejsce, w którym plik powinien zostać odszyfrowany, a następnie odszyfrować go do nowego pliku. Myślę, że zrobienie tego dobrze będzie ciekawym ćwiczeniem w nadużywaniu kontenera MP4. Prawdopodobnie chcesz również uniknąć odszyfrowania całego naraz, ale możesz uniknąć tego dość łatwo, używając wielu czytników aassetreaderów. – jgh

+0

Myślę, że każda odpowiedź będzie hackerem, i dopiero zaczęliśmy rozważać architekturę dla Androida wersja. Byłem zaskoczony, jak ograniczone są te mobilne API w porównaniu do DirectShow. –

Powiązane problemy