Encrypt video on the fly from android camera

I want to encrypt video on the fly that android camera captures. So I need to tell android MediaRecorder to write it video stream to my CipherOutputStream . The problem is MediaRecorder.setOutputFile() method accepts only FileDescriptor and there is no way to get encrypting file descriptor from CipherOutputStream.

So my question is how can I either emulate FileDescriptor to receive data writes and do encryption manually or somehow convince MediaRecorder to stream video into CipherOutputStream .


You can use LocalServerSocket and LocalSocket to implement what you want.

LocalServerSocket which provides the FileDescriptor via LocalServerSocket.getFileDescriptor()

  • Initiate a LocalServerSocket.
  • Initiate a LocalSocket object and connect to LocalServerSocket.
  • Invoke LocalServerSocket.accept() to accept connection from LocalSocket.
  • When the connection established, you can get FileDescriptor from LocalServerSocket.
  • Every bytes the Camera writes to LocalServerSocket could be retrieved from LocalSocket.getInputStream(), you can use a for-loop to get byte stream and write to CipherOutputStream.
  • Remember to put all steps into a new Thread.

    I used those APIs to create on-the-fly stream processor with the Camera as stream source.

    I hope this helps.

    链接地址: http://www.djcxy.com/p/61810.html

    上一篇: 从降价使用knitr后图形发生细微变化

    下一篇: 从Android相机即时加密视频