9

我想对android相机捕获的动态视频进行加密。所以我需要告诉 androidMediaRecorder将它的视频流写入我的CipherOutputStream. 问题是MediaRecorder.setOutputFile()方法只接受FileDescriptor并且无法从 CipherOutputStream 获取加密文件描述符。

所以我的问题是如何模拟 FileDescriptor 来接收数据写入并手动进行加密,或者以某种方式说服MediaRecorder将视频流式传输到CipherOutputStream.

4

1 回答 1

5

您可以使用 LocalServerSocket 和 LocalSocket 来实现您想要的。

LocalServerSocket,它通过 LocalServerSocket.getFileDescriptor() 提供 FileDescriptor

  1. 启动一个 LocalServerSocket。
  2. 启动一个 LocalSocket 对象并连接到 LocalServerSocket。
  3. 调用 LocalServerSocket.accept() 以接受来自 LocalSocket 的连接。
  4. 连接建立后,您可以从 LocalServerSocket 获取 FileDescriptor。
  5. Camera 写入 LocalServerSocket 的每个字节都可以从 LocalSocket.getInputStream() 中检索,您可以使用 for 循环获取字节流并写入 CipherOutputStream。

请记住将所有步骤放入一个新线程中。

我使用这些 API 来创建以 Camera 作为流源的动态流处理器。

我希望这有帮助。

于 2013-06-24T11:01:05.180 回答