所以我是一个初学者 ExoPlayer而我用的是 ExoPlayer v2.11.3 播放加密视频.我检查了这个问题。此处但它没有帮助我做到这一点,因为它是一个老帖子自2017年以来!我认为,我需要创建自定义的数据源从" "。
我认为,我需要创建一个自定义的数据源从"DefaultHttpDataSource
".
我在用这个"Encrypt()
"的方法来进行AES加密。
private static void encrypt() throws IOException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException {
if (hasFile()) {
Log.d("Encrypt", "encrypted file found, no need to recreate");
return;
}
// Video Reading.
FileInputStream fis = new FileInputStream(toBeEncryptedFile);
// This stream write the encrypted video. This stream will be wrapped by another stream.
FileOutputStream fos = new FileOutputStream(encryptedFile);
// Create cipher
cipher = Cipher.getInstance(AES_TRANSFORMATION);
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivParameterSpec);
// Wrap the output stream
CipherOutputStream cos = new CipherOutputStream(fos, cipher);
// Write bytes
byte[] buffer = new byte[1024 * 1024];
int bytesRead;
while ((bytesRead = fis.read(buffer)) != -1) {
cos.write(buffer, 0, bytesRead);
}
// Flush and close streams.
cos.flush();
cos.close();
fis.close();
}
你可以创建自定义的DataSource,同时覆盖Open()和close()。你可以创建数据输入流,并在同一方法中启动密码。