目前我正在使用javax.crypto.cipher库进行AES / CBC加密,但是,我发现它有点太慢了。需要45s-1m才能解密10分钟.mp4视频文件。
在Android上有更好的方法吗?我环顾四周,发现了一些关于openssl的帖子,但它真的快得多吗?
非常感谢任何链接,有用的帖子和/或评论。
答案 0 :(得分:1)
使用流式传输而不是文件解密。如果您流式传输视频,则可以根据需要简单地执行视频解密。如果你使用CTR或CBC模式,你甚至可以跳到流中的特定位置,虽然这需要一些额外的技巧才能实现。
将解密保留给默认提供程序应该是首选,但您当然可以使用本机解密库来加快速度。
答案 1 :(得分:0)
在开始播放之前愿意解密整个视频会使用户暴露出明显的延迟。你应该考虑一种流式架构。
典型设计涉及javax.crypto.CipherInputStream类和本地http实例。 SDK中没有用于http服务器的类,您必须实现自己的类或查找类似于LocalSingleHttpServer的现有库。
看起来像:
mServer = new LocalSingleHttpServer();
mServer.setCipher(myGetCipher());
mServer.start();
path = mServer.getURL(path);
mVideoView.setVideoPath(path);
mVideoView.start();