gpt4 book ai didi

android - 使用具有自己的加密逻辑的 ExoPlayer 输入流

转载 作者:行者123 更新时间:2023-11-29 23:46:14 24 4
gpt4 key购买 nike

我现在正在尝试使用我自己的逻辑播放加密视频 (mp4)。播放解码文件需要花费太多时间,因为它太大而无法创建和播放。所以,我发现的是如何在使用 ExoPlayer 使用 InputStream 解密它的同时播放它。但是以我的水平太难应用了。愁了两天的时候,我熬夜了,还是不见结果。所以我在这里寻求帮助。

我要找的是一份可以提供帮助的引用资料。我必须接受并解码缓冲区大小 (4096)。我不知道在哪里写这段代码。

而我认为完成功能的流程如下。1. 完成 ExoPlayer 用户界面。2.使用我的加密逻辑对下载的文件进行加密。 (缓冲区大小为 4096)3、InputStream接收文件,同时解码,播放。 (流媒体)

1 和 2 之前我会以某种方式完成,但是 3 对我来说非常困难。有具体的代码和解释吗?如果你认识任何人,请帮我一个忙。谢谢。

 try {
ios = new FileInputStream(params[0]);
fos = context.openFileOutput(params[1] + ".mp4", MODE_PRIVATE);

ScatteringByteChannel sbc = ios.getChannel();
GatheringByteChannel gbc = fos.getChannel();

File file = new File(params[0]);
fileLength = file.length();

startTime = System.currentTimeMillis();
int read = 0;
readb = 0;
ByteBuffer bb = ByteBuffer.allocate(4096);
while ((read = sbc.read(bb)) != -1) {
bb.flip();
gbc.write(ByteBuffer.wrap(enDecryptVideo.combineByteArray(bb.array())));
bb.clear();
readb += read;
if (readb % (4096 * 1024 * 3) == 0){
publishProgress(((int) ( readb * 100 / fileLength)));
} else if (readb == fileLength) {
publishProgress(101);
}
}



ios.close();
fos.close();
} catch (Exception e) {
e.getMessage();
} finally {
Log.d(TAG, "doInBackground: " + (System.currentTimeMillis() - startTime));
}

这是我使用文件播放时的代码。上面的代码是我制作解码文件并播放时使用的代码。现在我必须在解码的同时回放。它不创建文件。我很渴望。因为我入职已经一个月了,但是收到了不符合我水平的东西。但我真的很想达到这个目标...请教我。

最佳答案

您实际上可以利用平台内置的流视频加密功能,使用商业 DRM 或使用“明文 key ”加密。

如果这些满足您的需求,那么使用起来应该会容易得多,因为您不必自己实现加密和解密。

此答案提供了创建 HLS/AES 流和 DASH 明文 key 流的示例:

这不提供与 DRM 相同的安全性,因为 key 本身未加密,但它可能足以满足您的需求。

然后可以使用标准的 iOS、Android 或 HTML5 播放器播放这些流。

关于android - 使用具有自己的加密逻辑的 ExoPlayer 输入流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51362909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com