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

标签 encryption video-streaming exoplayer

我在服务器上存储了使用 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/

相关文章:

php - 加密 Controller 代码

iphone - ios http live黑屏

ffmpeg - 将视频上传到 Red5 流媒体服务器

python - 使用多线程和 OpenCV imshow() 同时显示多个图像流

Android:使用视频动态模糊表面

mysql - CF8和AES解密MySQL AES : encodings are not same

php - 解密 mySQL 数据库中的记录后使用 nl2br

android exoplayer自定义数据源

flutter - 如何让视频在不拉伸(stretch)的情况下填满屏幕(使用 Chewie 或类似工具)?

java - 从java中的图像中读取加密字节