2013-04-19 4 views
6

私は数日間見てきましたが、それを行う方法について明確な答えを得ることができません。MediaPlayerにオンザフライでオーディオ/ビデオを解読する

私は自分のSDカードに暗号化されたオーディオ/ビデオファイルをいくつか持っています。このファイルはMediaPlayerに送信し、復号化が同時に動作している間に再生を開始します。初期の種類のバッファは最初に作成され、再生を開始するのに十分な初期データがある場合、MediaPlayerは再生を開始し、バックグラウンドの復号化を続け、データを送信し続けます。

解決策のほとんどは、localhttpserverを持っていることを示していて、そのファイルをサーバーに送信し、戻ってくるとライブストリームのようにオーディオ/ビデオの再生を開始します。私が知らないことは、解読コードはどこに来るのですか?サーバー側では?もしそうなら、それのどの部分に?

私はこのhttp://libeasy.alwaysdata.net/の解決策を見てきましたが、解決できる可能性がありますが、その仕組みが分からないようです。私はそれがlocalserverを作成することを知っていますが、Cipherの部分で、自分の解読はどのように機能しますか?

private void myPlay(String path) { 
    mServer = new LocalSingleHttpServer(); 
    mServer.setCipher(myGetCipher()); 
    mServer.start(); 
    path = mServer.getURL(path); 
    mVideoView.setVideoPath(path); 
    mVideoView.start(); 
} 
public void onCompletion(MediaPlayer mp) { // MediaPlayer.OnCompletionListener interface 
    mServer.stop(); 
} 

私はAndroidの開発にかなり慣れています。わたしが不明な点があれば、私にも負担してください。

ありがとうございます。

+0

あなたがこのためにどんな解決策を得ましたか。私も暗号化されたビデオを再生することができません – user1444172

+0

あなたがオンラインでない限り、あなたはビデオを見ることができないので、これは最善の解決策ではありません。また、インターネットの接続速度にも依存します。デバイス上でローカルに何かを探すようにしてください。ファイルが小さい場合。あなたは一度それを行うことができますが、大きなサイズのファイルを扱っているなら、これはうまくいきません。 –

答えて

0

暗号化を提供する場合、httpサーバによって復号化が行われます。
コードこの(あなたがどこかにキャッチ例外を追加する必要があります)のようなもの:

import javax.crypto.Cipher; 
private Cipher myGetCipher() { 
    Cipher c = Cipher.getInstance("RC4"); 
    c.init(Cipher.DECRYPT_MODE, new SecretKeySpec("myPassword".getBytes(), "RC4")); 
    return c 
} 
+0

こんにちは@ libeasy、私は別の場所から投稿をフォローしています。しかし、暗号化されたビデオは同じ鍵と暗号で再生されません。 Pls。以下の私のコードを参照してください:(別の答えとしてコードを貼り付けていますが、このコメントスペースでは不十分です) – user1444172

+0

この種の支援については、サイトに記載されている連絡先を使用してください。代わりに、実際のレポートを提供し、logcatとデバイスとコンテキストに関する詳細を提供します。 – libeasy

関連する問題