【问题标题】:How to play a video from Byte array?如何从字节数组播放视频?
【发布时间】:2012-03-18 17:12:54
【问题描述】:

我正在开发一个需要加密视频文件的应用程序,该应用程序运行良好。但是我用来解密的方法以字节数组的形式返回视频。那么无论如何我可以使用该数组播放视频而无需创建新文件。

我的方法解密:

  private static byte[] decrypt(byte[] raw, byte[] encrypted) throws EncrypterException {
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
try {
    final Cipher cipher = Cipher.getInstance("AES");
    cipher.init(Cipher.DECRYPT_MODE, skeySpec);

    return cipher.doFinal(encrypted);

} catch (Exception e) {
    throw new EncrypterException(e);
}
}

请帮帮我,我被困在这里了?

【问题讨论】:

    标签: java android encryption bytearray


    【解决方案1】:

    经过大量搜索,这个答案可能是一个总结。所有功劳都应归解决方案所有者所有。

    由于VideoView 只接受 URL 或文件,我们有两种解决方案;

    解决方案 1; 使用流创建临时文件并将该文件提供给 videoView。

    参考; https://stackoverflow.com/a/21549067/1847645

    解决方案 2; 在 Android 本地系统上创建媒体服务器并向媒体服务器提供流,其中 videoView 被定向到本地主机进行流式传输。

    参考; https://stackoverflow.com/a/9096241/1847645

    其他参考; 感谢 libeasy,这非常有用; https://stackoverflow.com/a/15668803/1847645

    【讨论】:

      【解决方案2】:

      您不应向 VideoView 提供静态文件,而应使用流。如何产生这个流? 请参阅Android Supported Media Formats。最简单的可能是本地 http 服务器。 LocalSingleHttpServer 是实现这种解决方案的库组件的一个示例。

      【讨论】:

        【解决方案3】:

        您通常如何播放视频?您将InputStrem 实例发送给玩家。 所以你ByteArrayInputStream 包装了你的字节数组并将其发送给播放器。

        【讨论】:

        • @Navdroid:ByteArrayInputStream 是 InputStream。
        • 但是我想用VideoView..不创建新文件怎么使用
        • 您找到解决方案了吗?我也在尝试播放从本地数据库加载的视频,我真的必须将它保存到“磁盘”才能播放吗? VideoView 控件仅允许您设置 Uri/File 以进行播放。也许还有另一种不使用 VideoView 来播放视频的方法?
        • 这个问题的答案如何?
        • 您找到解决方案了吗?导航仪
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-02
        • 2013-04-03
        • 1970-01-01
        • 1970-01-01
        • 2014-07-31
        相关资源
        最近更新 更多