如何直接播放/流式传输存储在BLOB中的视频



在我的应用程序中,视频存储为一系列加密的SQLite BLOB。

为了直接从那些SQLite播放视频,我需要编写自己的自定义ContentProvider。我知道如何在SQL查询上实现基本的ContentProvider,但在这种情况下,我不知道如何做到这一点。

VideoView.setVideoURI()如何利用提供的URI?它读取的是Cursor还是ParcelFileDescriptor,还是某种流?

有什么想法、线索、暗示吗?

更新

基本上,问题不仅仅是关于ContentProvider,而是关于直接从SQLite Blob流式传输/播放视频。如何播放此视频并不重要,唯一的前提条件是:禁止创建中间/临时视频文件(出于安全考虑)。

您可以使用ServerSocket
作为VideoView uri,您可以设置服务器套接字的localhost url(127.0.0.1:PORT)

从SQL读取blob并解密后,将其写入套接字,VideoView将读取并播放它。
它不会存储在任何地方(只存储在内存中)。

您将需要注意线程的缓冲和同步。

我建议ServerSocket使用两个线程(一个用于接受连接,另一个用于与客户端通信)
我曾经经历过一些特定的设备尝试打开流两次。若您的线程将被与客户端的通信阻塞,并且不接受另一个连接,那个么它可能会因管道破裂而失败

最新更新