我想即时加密android摄像机捕获的视频。所以我需要告诉android MediaRecorder将其视频流写入我的CipherOutputStream。问题是MediaRecorder.setOutputFile()方法仅接受FileDescriptor,无法从CipherOutputStream获取加密文件描述符。

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

最佳答案

您可以使用LocalServerSocket和LocalSocket来实现所需的功能。

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

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

  • 记住将所有步骤都放到新线程中。

    我使用这些API创建了以Camera作为流源的实时流处理器。

    我希望这有帮助。

    10-08 19:23