【问题标题】:Play video from ByteArrayOutputStream on android在 android 上播放来自 ByteArrayOutputStream 的视频
【发布时间】:2014-06-04 04:47:21
【问题描述】:

我正在实现一个必须播放加密视频文件的视频播放器。该文件必须在运行时在缓冲区(例如 ByteArrayOutputStream)中解密,然后必须将流送入视频播放器以播放电影。

大多数人建议在本地托管一个流服务器实例并将 URL 提供给播放器。但是这种方法安全吗?如果有些人使用网络分析器应用程序(如 Windows 的提琴手)并捕获所有本地网络调用怎么办。用户将能够在流服务器和播放器之间流动时获取解密的字节,并将其保存在本地文件中

【问题讨论】:

    标签: android xamarin


    【解决方案1】:

    假设您想使用 android.media.MediaPlayer 来完成任务。

    然后看看MediaPlayer.setDataSource你有哪些选项:

    • 字符串路径(一个文件)
    • Uri uri(http:// 或 content:// 方案)
    • 文件描述符文件

    1) Java 文件对您没有帮助。

    2) 带有 http:// 的 Uri 是您提到的本地主机上的流服务器。我测试了在我的应用程序中播放这样的文件并使用 WireShark for Android 捕获网络流量,但我什么也没捕获,可能是因为无法捕获本地主机上的流量。因此,这可能足以安全地通过本地 http 服务器进行流式传输。

    3) 具有 content:// 方案的 Uri 从 ContentProvider 获取数据,它可能是您自己的非导出提供程序,您可以在其中实现 openAssetFile,并使用 ParcelFileDescriptor.createPipe() 和读取/解密数据的线程和将它们写入到您在 openAssetFile 上返回的 AssetFileDescriptor 的管道中。 这也是安全的选择,因为您的 ContentProvider 没有被导出。

    因此,您决定 2) 或 3) 中哪一个更容易实现。

    【讨论】:

    • 嗨,谁能给我提供 2/3 实现的示例代码?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    相关资源
    最近更新 更多