使用libmedia播放加密视频时会暂停复制

时间:2013-11-05 11:41:39

标签: android video encryption

我的应用程序在使用libmedia播放20分钟加密视频时出现问题。一开始一切都很好:图书馆工作并播放加密视频...但是在6分钟后再现暂停20秒,之后视频继续播放4分钟并再次暂停,重新启动20秒后再次暂停......等等上。

视频正在Android 4.1上运行,大小为80MB,并使用AES加密。这是我们在“onCreate”方法结束时使用的代码:

private void startVideo() {

    mVideoView.requestFocus();
    mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

        @Override
        public void onCompletion(MediaPlayer mp) {              
            finish();                    
        }           
    });

    try{
        SecretKeySpec skey = new SecretKeySpec("XXXXXxxxxxXXXXXX".getBytes(), "AES");     
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        cipher.init(Cipher.DECRYPT_MODE, skey,new IvParameterSpec(new byte[16]));   

        Licensing.allow(this);
        mServer = new LocalSingleHttpServer();        

        mServer.setCipher(cipher);
        mServer.start();           

        String serverPath = mServer.getURL("myvideopath");      
        mVideoView.setVideoPath(serverPath);
        mVideoView.setMediaController(mMediaController);
        mVideoView.start();  

    }catch(Exception e){
        e.printStackTrace();
    }

    mVideoView.setMediaController(null);
}

似乎视频在此暂停时再次被解密...但我不知道为什么。

1 个答案:

答案 0 :(得分:2)

问题是Cipher.getInstance("AES/CBC/PKCS5Padding")它不是流密码,是块密码。

使用Cipher.getInstance("AES/CFB/NoPadding")解决问题。