如何使用 ExoPlayer 播放 DES 加密文件

How do I play a DES encrypted File using ExoPlayer

我正在使用 ExoPlayer 播放设备 SD 卡中的媒体文件(mp4s .h264 编码)。一些文件是 DES 加密的。我可以解密文件并取回一个 inputStream,但是我不确定如何使用 ExoPlayer 播放这个 inputStream。任何帮助,将不胜感激。

protected void playVideo(File file) {
        InputStream is;
        if (file.getName().endsWith(".DES")) {
            is = FileManager.decryptFile(file);
            //what to do with this input stream?
        }

        Uri uri = Uri.parse(file.getAbsolutePath());

        if (mPlayer != null) {
            mPlayer.release();
        }

        mPlayer = new VideoPlayer(getRendererBuilder(uri));
        mPlayer.addListener(this);
        if (mLastPosition > 0) {
            mPlayer.seekTo(mLastPosition);
        }

        mPlayer.prepare();
        mPlayer.setSurface(mSurface);
        mPlayer.setPlayWhenReady(true);
    }

您可以编写接受 InputStream 的自定义 DataSource:对于 DataSource,您只需实现 open(DataSpec)、close() 和 read(byte[] buffer, int offset, int readLength)。令我惊讶的是,ExoPlayer 中似乎没有任何可用的实现。对于他们的瑞士军刀来说,这似乎是显而易见的 blade。