2012-02-29 1 views
6

私は非常によく動作しているビデオファイルの暗号化が必要なアプリケーションに取り組んでいます。私は、バイト配列のようにビデオを返します。とにかく、新しいファイルを作成せずにその配列を使ってビデオを再生することができます。バイト配列からビデオを再生するには?

私の方法の解読:

private static byte[] decrypt(byte[] raw, byte[] encrypted) throws EncrypterException { 
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); 
try { 
    final Cipher cipher = Cipher.getInstance("AES"); 
    cipher.init(Cipher.DECRYPT_MODE, skeySpec); 

    return cipher.doFinal(encrypted); 

} catch (Exception e) { 
    throw new EncrypterException(e); 
} 
} 

は、私がここで立ち往生しています、私を助けてください?

答えて

1

通常どのように動画を再生しますか?プレーヤーにInputStremインスタンスを送信します。 ByteArrayInputStreamは、バイト配列をラップしてそれをプレーヤーに送信します。

+0

でも、VideoViewでByteArrayInputStreamをどうすれば使用できますか? – Navdroid

+0

@Navdroid:ByteArrayInputStreamはInputStreamです。 –

+1

しかし、私はVideoViewを使用したいと思います。新しいファイルを作成せずにどのように使用できますか? – Navdroid

0

VideoViewには静的ファイルではなくストリームが供給されるべきです。このストリームを作り出す方法は? Android Supported Media Formatsを参照してください。最も簡単なのは、ローカルのhttpサーバーです。 LocalSingleHttpServerは、この種のソリューションを実装するライブラリコンポーネントの例です。

1

多くの検索の後、この回答は合計になる可能性があります。すべてのクレジットはソリューションの所有者に渡す必要があります。

VideoViewが唯一のURLまたはファイルを受け入れているので、我々は2つのソリューションを持っています。

解決策1;ストリームでtempファイルを作成し、そのファイルをvideoViewに提供します。

Ref; https://stackoverflow.com/a/21549067/1847645

ソリューション2。 Android Local Systemにメディアサーバーを作成し、ストリーミングのためにvideoViewがローカルホストに転送されるメディアサーバーにストリームを提供します。

Ref; https://stackoverflow.com/a/9096241/1847645

その他のRef; libeasyのおかげで非常に便利です。 https://stackoverflow.com/a/15668803/1847645

関連する問題