Skip to content

Video processing workflow

asenior edited this page Aug 18, 2011 · 2 revisions

This page is for designing the workflows using an ffmpeg-based video encoding solution. See the page on options for video for alternatives to using ffmpeg.

Options:

  • Basic scenario: We record with the built-in media recorder. We reencode after the fact.
  • Real-time version: We record to a socket like sipdroid which adds headers, then pass to ffmpeg for transcoding
  • Chunked: Write short snippets to files (thus finalizing the headers) Transcode the chunks when finalized.

ffmpeg currently has a filter that does a fixed transformation. We need a filter that can do a dynamic transformation, passed through a socket or a file of metadata (generated based on manual annotation or automatic face detection). Ideally the filter would store encrypted redacted data for later redaction reversion.

Shawn's current implementation has ffmpeg as a standalone binary. Future versions could have a JNI wrapper to make calls directly.

Audio is currently just copied. In the future we might want to erase/obscure the audio.

In the future it would be good to redact the video file in the compressed domain to save memory, but most importantly decode/re-encode time. ffmpeg may provide access to the compressed stream.