Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to play a video from Byte array?

I am working on an app which needs encryption of video files which is working quite well.But the method I am using to decrypt returns the video as in Byte array. So is there anyway that I can play the video using that array without creating a new file.

My method decryption:

  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);
}
}

Please help me I am stuck here ?

like image 351
Navdroid Avatar asked Feb 29 '12 07:02

Navdroid


1 Answers

After lots of search, this answer could be a sum up. All credits should go the solution owners.

Since VideoView only accept URL or File, we have two solution;

Solution 1; Create temp File with stream and provide that file to videoView.

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

Solution 2; Create media server on Android Local System and provide stream to media server where videoView is directed to the localhost for streaming.

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

Other Ref; Which is very useful, thanks to libeasy; https://stackoverflow.com/a/15668803/1847645

like image 188
Berkay Turancı Avatar answered Sep 28 '22 18:09

Berkay Turancı