2012-03-16 206 views
16

我正在實施包含視頻播放器的應用程序。由於某些原因,視頻文件使用AES加密,並且這些文件的大小可能相當大,以避免將其作爲一個整體加載到RAM中。我正在尋找一些方法與AVPlayer一起播放。使用AVPlayer播放加密視頻

嘗試:

1)定製NSURLProtocol的建議在這裏http://aptogo.co.uk/2010/07/protecting-resources/ 沒有工作,我建議AVPlayer使用它自己和我不會被調用。

2)使用AVAsset以小塊切割視頻,然後將它們提供給AVPlayer--由於AVPlayer中沒有API,因此失敗。

任何解決辦法,將不勝感激:)

+0

如果你有加密的文件,我們應該至少**知道格式等。你有沒有考慮過創建一個解密代理?你有什麼期望/用例(尋求等)? – 2012-03-17 13:13:34

+0

我不明白,你是什麼意思。你提供創建代理,但爲什麼?在我看來,有以下算法: 1.抓住加密的數據,AVPlayer嘗試通過url加載。 2.解密它。 3.將解密的數據放入AVPlayer。 很可能這是錯誤的,因爲AVPlayer沒有任何數據提供者。但我不知道其他方式。 – Asya 2012-03-19 07:49:13

+0

您可以創建一個連接到實際內容的Web代理,並將URL指向解密數據的本地服務。通過這種方式,您可以解密加密/解密並播放視頻。 – 2012-03-19 10:52:47

回答

4

你有2種選擇:

  1. 如果定位的iOS 7及更高版本的退房AVAssetResourceLoaderDelegate。它允許你做一個自定義的NSURLProtocol,但專門用於AVPlayer。

  2. 模擬支持Range標頭的HTTP服務器,並將AVURLAsset指向localhost。

我實現了#2之前,如果需要可以提供更多的信息。

+0

您可以提供更多關於2的細節。 ? – 2014-04-03 11:21:52

+0

我有同樣的問題。你介意打開你的解決方案嗎? – Sauvage 2014-05-05 12:55:18

+0

@JerneyStrasner你能否提供關於#2的更多信息。我一直試圖用'CocoaHTTPServer'來實現這個功能,但是我的視頻在播放3秒後會嘗試播放。 – vaughan 2014-05-18 22:25:16