繁体   English   中英

如何实现用于解密和播放视频的缓冲区?

[英]How can I implement a buffer for decrypt and play the video?

我需要创建一个解密视频文件的实现。 我目前正在使用AesBase64算法对这些视频进行解密,但是在我的测试中,解密对于Android而言变得过于繁琐,因为字节数组已完全释放在内存中,因此当fileIt文件超过了字节数时,我会收到java.lang.OutOfMemoryError。 25 MB。 我的问题是:如何为我实现一个缓冲区以解密每个字节数组并已经为每个解密的字节播放视频?

我不确定“ AesBase64”是什么意思,但这听起来像是AES加密和Base64编码的混搭。 您可以使用Cipher类的更新方法来实现流式解密器。 不幸的是,android Base64类实际上并不支持零碎的base64解码,尽管您可以自己花费很多精力来实现它。 但是,存在一个更简单的替代方法:使用CipherInputStreamBase64InputStream

使用如下所示的内容:

public void decrypt(String filename) throws Exception {
    BufferedInputStream bis = new BufferedInputStream(new FileInputStream("filename"));
    Base64InputStream base64Stream = new Base64InputStream(bis, 0);
    Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");
    CipherInputStream cis = new CipherInputStream(base64Stream, c);
    byte[] plainBuf = new byte[2048];
    int nRead;
    while ((nRead = cis.read(plainBuf)) > 0) {
        // send plainBuf[0] through plainBuf[nRead-1] to the video codec
    }
    cis.close();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM