1

我使用 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

我的观察:

  1. 使用较小的 MP4 文件,至少从本地 http 服务器播放未加密的视频
  2. 对于较大的 MP4 文件,未加密的视频也无法播放
  3. 对于较小的文件,加密文件不会使用基于用于加密的相同密钥的 Cipher。
  4. 我可以确认我的 AES/RC4 加密和解密工作良好。我可以从播放器正常播放解密文件。

请帮助我使用正确的方式使用 libmedia API 播放加密视频

4

0 回答 0