01
The product constraint
Video compression is not an instant button action. It can outlive the screen that started it, compete for device resources, and fail after the user has moved on. Treating that work as ordinary UI state would make the product fragile by design.
02
The processing boundary
FFmpeg owns the media operation. The Android layer translates the user’s choice into a processing job and keeps the interface concerned with intent, progress, completion, and failure rather than codec internals.
03
Background execution
WorkManager carries the long-running job beyond one foreground screen. That decision changes the user experience: leaving the interface does not have to mean abandoning the operation, and the app has a defined place to report progress and failure.
04
What this demonstrates
The core engineering move was drawing the lifecycle boundary correctly. Native media work, Android background execution, and the visible interface each have different responsibilities, and the product is more dependable when those responsibilities remain separate.
The public case focuses on product decisions. Source access depends on the project.
Ask about related work →