gpt4 book ai didi

encryption - 在 exoplayer android 中使用 AES 在线加密流媒体视频文件

转载 作者:行者123 更新时间:2023-12-02 00:36:09 26 4
gpt4 key购买 nike

我在服务器上存储了使用 AES 加密的视频文件。如何在 exoplayer 中在线播放它们?我不想下载文件并解密它:WAITING下载完成,然后播放解密的文件。

最佳答案

我建议查看 UriDataSourceDataSource 接口(interface)。您可以从 DataSource 派生并提供与 UriDataSource 非常相似的实现,并将其传递到 ExoPlayer。该类可以访问所有字节都经过的 read() 方法。该方法允许您一次解密一个缓冲区中的文件。

在 ExoPlayer 2.0 中,您可以从自己的自定义 DataSource.Factory 提供自己的自定义 DataSource,该自定义 DataSource 可以传递给 ExtractorMediaSource(或任何其他 MediaSource)。

如果您没有使用 ExoPlayer 2.0,则将 DataSource 传递到 ExtractorSampleSource,然后传递到 VideoRenderer AudioRender 位于您实现的自定义 RendererBuilderbuildRenderers() 中。(您也可以在 Google 上搜索“自定义数据源 exoplayer”,如果我提供的内容不够,这应该会提供更多信息 - 或者如果您找不到任何内容,我可以澄清)。

这是 read() 方法的代码片段:

@Override
public int read(byte[] buffer, int offset, int readLength) throws IOException {
if (bytesRemaining == 0) {
return -1;
} else {
int bytesRead = 0;
try {
long filePointer = randomAccessFile.getFilePointer();
bytesRead =
randomAccessFile.read(buffer, offset, (int) Math.min(bytesRemaining, readLength));
// Supply your decrypting logic here
AesEncrypter.decrypt(buffer, offset, bytesRead, filePointer);
} catch (EOFException eof) {
Log.v("Woo", "End of randomAccessFile reached.");
}

if (bytesRead > 0) {
bytesRemaining -= bytesRead;
if (listener != null) {
listener.onBytesTransferred(bytesRead);
}
}
return bytesRead;
}
}

[编辑]也刚刚找到this SO post其中有类似的建议。

关于encryption - 在 exoplayer android 中使用 AES 在线加密流媒体视频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44458093/

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