2012-02-13 11 views
3

クラスを変更(拡張)して、暗号化されたファイルを開き、MediaPlayerのsetDataSource(FileDescriptor)のストリームを使用できるようにしようとしています。問題は、ストリーム内の復号を行うためにどのメソッドをオーバーライドするべきかわからないということです。私はすべてread()メソッドをオーバーライドしようとしましたが、mediaPlayerはそれらを使用していないようです。MediaPlayerのFileInputStreamを変更するsetDataSource

提案がありますか?

+0

どのような種類の暗号化を使用していますか? – st0le

+0

私はRC4を使用しています。おそらくFileInputStreamからread()を実行している間に、私はそれを即座に解読できます。私は既にファイルサーバーのための同じオンザフライのアーキテクチャを実装したので、私はちょうどメディアプレーヤーにURLを供給することができますが、私はサーバーを使用せずにそれをしたいです。 – josephus

+0

おそらくばかげた質問ですが、 '新しいFileInputStream(新しいCipherInputStream()、)を試したことがありますか? 'RC4のCipherInputStreamを設定してください – st0le

答えて

5

私はMediaPlayerがどんな種類のInputStreamも受け入れないと思います。 MediaPlayerで使用されるファイルから読み取られたデータは変更できません。

MediaPlayerはFileDescriptor(ネイティブコードで処理され、実際のファイルから読み取られ、Javaにコールバックされません)を受け入れます。 MediaPlayerはhttp URLを受け取ります。

実際に変更されたデータが必要な場合は、local http serverとsetDataSourceをURIで使用することを検討してください。

+0

あなたは正しいです。数時間かけて試しても失敗しても、私は最終的にMediaPlayerのカスタム入力ストリームをあきらめました。あなたと他の多くの情報源が示唆しているように、フォールバック計画は、プレーヤーに送信されているデータを暗号化できるローカルのhttpサーバーを作成することでした。それはあなたがそれに接続しているアンドロイドMediaPlayerをサポートするために再開可能なダウンロードを処理しなければならないので、思ったほど簡単ではありませんでした(ヒント:範囲)。結局それは唯一の方法でした(ビデオを一口にまとめて、システムのセキュリティを弱めるのを除いて) – josephus

+0

@JosephusVillareyだから、あなたはこのソリューションを使いました。コードの一部を共有できますか?データバイトを変更してローカルのHTTPサーバーに書き込んでいますか?そして、あなたがこのHTTPサーバーへのURIを作成し、MediaPlayerがそこから読むと?ありがとう。 – Derzu

+0

はい、正確です。私は自分のコードをあなたと共有することはできませんが、私の仕事をするために私が基づいているHTTPサーバーコードを指し示すことができます:http://elonen.iki.fi/code/nanohttpd/ – josephus

関連する問題