我使用 libmedia 库( http://libeasy.alwaysdata.net/ )尝试如下:但是加密的视频不会使用相同的密钥和密码解密和播放。请。请参阅下面的代码:(为便于理解而修改)
public class MyClassActivity extends Activity {
VideoView mVideoView;
LocalSingleHttpServer mServer ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SecretKey sk = encryptVideo("/mnt/sdcard/input.mp4", "/mnt/sdcard/enc.mp4");
playENCVideo(sk,"/mnt/sdcard/enc.mp4");
}
public void playENCVideo(SecretKey skey, String path) {
Cipher decipher = null;
decipher = Cipher.getInstance("AES");
decipher.init(Cipher.DECRYPT_MODE, skey);
mServer = new LocalSingleHttpServer();
mServer.setCipher(decipher);
mServer.start();
path = mServer.getURL(path);
mVideoView = (VideoView) findViewById(R.id.vid_view);
mVideoView.setVideoPath(path);
mVideoView.setOnPreparedListener(this);
mVideoView.setOnCompletionListener(this);
mVideoView.setMediaController(new MediaController(this));
mVideoView.start();
} //playENCVideo()
encryptVideo() {
}
decryptVideo() {
}
} //MyClassActivity
我的观察:
- 使用较小的 MP4 文件,至少从本地 http 服务器播放未加密的视频
- 对于较大的 MP4 文件,未加密的视频也无法播放
- 对于较小的文件,加密文件不会使用基于用于加密的相同密钥的 Cipher。
- 我可以确认我的 AES/RC4 加密和解密工作良好。我可以从播放器正常播放解密文件。
请帮助我使用正确的方式使用 libmedia API 播放加密视频