所以我是ExoPlayer的初学者,我正在使用ExoPPlayer v2.11.3播放加密视频。我在这里检查了这个问题,但它对我没有帮助,因为它是2017年以来的一个旧帖子!
我认为,我需要从"DefaultHttpDataSource
"创建一个自定义DataSource。
我使用这种"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();
}
您可以在重写Open((和close((的同时创建自定义DataSource。您可以使用相同方法启动的密码创建数据输入流。