我陷入了一种奇怪的境地,因为我正在开发一个Android应用程序,它在运行时解密视频并播放它。解密过程已经过优化,我正在使用RC4算法和nio通道进行复制,但问题是,对于250mb视频,它仍然需要大约1分钟10秒,而我的客户端最多需要15秒。我正在考虑一个解决方案,其中我播放我的视频,而它正在解密和复制,但它没有发生我得到错误无法播放此视频。我正在使用VideoView播放视频。任何人都有任何想法,如何实现这一目标。我正在使用
设置我的视频uriv.setVideoURI(uri);
如果我在解密后播放,我可以播放视频。
请帮帮我。
答案 0 :(得分:2)
当然,在开始播放之前愿意解密整个视频会使用户暴露出明显的延迟。你应该考虑一种流式架构。
典型设计涉及javax.crypto.CipherInputStream类和本地http实例。 SDK中没有用于http服务器的类,您必须实现自己的类,否则查找类似于LocalSingleHttpServer的现有库。
看起来像:
mServer = new LocalSingleHttpServer();
mServer.setCipher(myGetCipher());
mServer.start();
path = mServer.getURL(path);
mVideoView.setVideoPath(path);
mVideoView.start();