Шифрование видео на лету с камеры android

Я хочу зашифровать видео на лету, которое захватывает камера android. Для Андроид MediaRecorder писать видео поток в мой CipherOutputStream. Проблема MediaRecorder.setOutputFile() метод принимает только FileDescriptor и нет способа получить шифрующий файловый дескриптор из CipherOutputStream.

Итак, мой вопрос в том, как я могу эмулировать FileDescriptor для получения записи данных и шифрования вручную или как-то убедить MediaRecorder для потокового видео в CipherOutputStream.

1 ответов


вы можете использовать LocalServerSocket и LocalSocket для реализации того, что вы хотите.

LocalServerSocket, который предоставляет FileDescriptor через LocalServerSocket.getFileDescriptor ()

  1. инициировать LocalServerSocket.
  2. инициировать объект LocalSocket и подключиться к LocalServerSocket.
  3. Вызвать LocalServerSocket.accept (), чтобы принять соединение от LocalSocket.
  4. когда соединение установлено, вы можете получить файл из LocalServerSocket.
  5. каждый байт камера пишет LocalServerSocket может быть получен из LocalSocket.getInputStream (), вы можете использовать for-loop для получения потока байтов и записи в CipherOutputStream.

Не забудьте поместить все шаги в Новый Поток.

Я использовал эти API для создания процессора потока "на лету" с камерой в качестве источника потока.

надеюсь, это поможет.