2012-09-02 152 views
10

我正在尋找在iOS視頻播放器中實現DRM,但我不知道如何實現這一點。爲了實現視頻DRM(同時仍然使用Apple的硬件加速H264解碼),我需要一種方法將解密後的H264流提供給標準的iOS視頻播放API。如何在iOS中實現視頻DRM

根據this question,無法在2010年9月實施第三方DRM。有一個thread in the Apple Developer Forums無處可去。然而,截至今天,存在許多第三方DRM庫:Widevine,Irdeto (PDF),Marlin。他們已經清楚地發現了一些將自定義流傳送到Apple批准的應用程序中的媒體播放器的方法。

我發現了兩條線索。其中一條是對create a custom URL protocol的建議,但人們在視頻中使用這種方法似乎效果不佳。另一種是創建本地HTTP服務器線程,並通過HTTP實時流在iDevice內的127.0.0.1上提供內容。我希望能夠確信蘋果會在走上這條路線之前批准。

因此 - 第三方DRM實現使用哪些Apple認可的API來獲取解密的視頻數據到視頻播放器?編輯:latest BBC iPlayer for iOS允許下載程序供以後查看。要麼他們存儲的內容是明確的,要麼他們已經破解了這個問題。

+1

關於對127.0.0.1的HTTP實時流,我可以告訴你,它的工作原理,它是由蘋果公司所接受。商業解決方案如Verimatrix使用這種方法。 –

+0

謝謝 - 我之前沒有遇到過Verimatrix,我將它添加到我們的列表中。 –

+0

查看我最近寫的這篇文章:http://aameer.github.io/articles/digital-rights-management-multi-drm/它詳細介紹瞭如何實現多DRM – Aameer

回答

2

您可以開始將文件解密爲另一個文件並在解密時回放該文件。你需要讓它緩衝幾秒鐘的視頻,但它會起作用。

此外,您需要確保moov原子在文件中的mdat原子之前,否則它將無法工作。 (例如,AVFoundation會創建MP4,其中moov原子位於mdat原子之後,因此它們需要修改才能工作)

+0

謝謝 - 我控制編碼,所以文件的內部順序應該很簡單。這給我帶來了一些問題 - 我是否可以處理用戶嘗試在視頻中尋找前進的動作,以及如何處理文件系統中的大型解密文件。我不認爲iOS支持稀疏文件,因此我可能需要將視頻分成與HLS類似的塊,以使其易於管理。 –

+0

是的,我不能告訴你什麼正確的解決方案在你的情況。爲了尋找,你可以使用'stbl'原子的子原子來計算你應該解密的文件的位置,然後從那裏解密到一個新的文件中。我認爲這樣做會是濫用MP4容器的有趣練習。您可能也想避免同時解密整個事物,但您可以通過使用多個aassetreaders相當容易地避免這種情況 – jgh

+0

我認爲每個答案都會成爲破解,而我們剛剛開始考慮Android的體系結構版。我很驚訝這些移動API與DirectShow相比有多有限。 –