2012-02-29 31 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 2012-02-29 08:12:32

+0

@Navdroid:ByteArrayInputStream是一個InputStream。 – 2012-02-29 12:47:13

+1

但我想用它VideoView ..我怎樣才能使用它,而無需創建一個新文件 – Navdroid 2012-02-29 12:50:18

0

您不應該爲VideoView提供靜態文件,而是使用流。如何產生這個流? 請參閱Android Supported Media Formats。最簡單的可能是本地http服務器。 LocalSingleHttpServer是實現這種解決方案的庫組件的一個例子。

1

經過大量的搜索,這個答案可能是一個總結。所有的信用都應該由解決方案所有者負責

由於VideoView只接受URL或File,我們有兩個解決方案;

解決方案1;用流創建臨時文件並將該文件提供給videoView。

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

解決方案2;在Android本地系統上創建媒體服務器,並將媒體服務器提供給媒體服務器,其中videoView指向本地主機進行流式傳輸。

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

其他參考文獻; 這是非常有用的,感謝libeasy; https://stackoverflow.com/a/15668803/1847645