2012-03-16 19 views
16

私はビデオプレーヤーを含むアプリケーションを実装しています。いくつかの理由から、ビデオファイルはAESで暗号化されており、これらのファイルのサイズは、RAMに1つのファイルとしてロードされるのを避けるためにかなり大きい場合があります。私はAVPlayerでそれを再生するためのいくつかの方法を探しています。試してみましたAVPlayerで暗号化されたビデオを再生

1)カスタムNSURLProtocolここhttp://aptogo.co.uk/2010/07/protecting-resources/ 動作しませんでした提案として、私はAVPlayerが、それは自分の用途と鉱山が呼び出されませんことを示唆しています。

2)AVAssetを使用して小さなチャンクでビデオをチョップし、AVPlayerにフィードします。これはAVPlayerにAPIがないために失敗しました。

任意の回避策をいただければ幸いです:)

+0

暗号化されたファイルをお持ちの場合は、**少なくともフォーマットなどを知っている必要があります**復号化を行うプロキシを作成しましたか?あなたの期待/ユースケース(シークなど)は何ですか? –

+0

私は正確に理解できません。何を意味しましたか?あなたはプロキシを作成することを提案しますが、何のために?私の考えでは、以下のアルゴリズムがあります。 1. AVPlayerが暗号化されたデータをキャッチして、URLでロードしようとします。 2.復号化します。 3.解読されたデータをAVPlayerに入れます。 AVPlayerにはデータプロバイダがないため、間違っている可能性があります。しかし、私は他の方法を知らない。 – Asya

+0

実際のコンテンツに接続するWebプロキシを作成し、そのデータを復号化するローカルサービスへのURLを指定することができます。このようにして、暗号化/復号化とビデオの再生を切り離すことができます。 –

答えて

4

あなたは2つのオプションがあります:iOSの7以降、チェックアウトAVAssetResourceLoaderDelegateをターゲットにした場合

  1. を。これは、カスタムNSURLProtocolで行うことができますが、具体的にはAVPlayerで行うことができます。

  2. RangeヘッダーをサポートするHTTPサーバーをエミュレートし、AVURLAssetをlocalhostに指定します。

私は前に#2を実装し、必要に応じてさらに情報を提供することができます。

+0

2の詳細を教えてください。 ? –

+0

私は同じ問題を抱えています。あなたはあなたの解決策を開けてください。 – Sauvage

+0

@ JerneyStrasner#2の詳細をお知らせください。私は年齢のための 'CocoaHTTPServer'を使用してこれを実装しようとしていますが、再生の3秒後に私がうまく再生しようとする私のビデオをしようとしています。 – vaughan

3

私はAppleサンプルプロジェクトhttps://developer.apple.com/library/ios/samplecode/sc1791/Listings/ReadMe_txt.htmlをダウンロードしました。あなたの望むものとまったく同じように見えます。

デリゲートがそれぞれAVURLAssetAVAssetResourceLoaderコールをキャッチし、独自の復号鍵を持つ新しい.m3a8ファイルを作成します。
次に、すべての.tsファイルURLをm3a8に入れてプレーヤーにフィードします。

このプロジェクトは、HLSフィードを使ってできることの概要をよく説明しています。

関連する問題