When MediaProjection Isn't Enough
summary
Claim: MediaProjection causes OS fragmentation and UX friction so a custom native in‑app recorder is built and shipped. Implementation uses pixel copy and root‑surface reflection to capture activity and dialogs at up to 60fps, a continuous mic stream with silence padding to avoid audio stitching, and MediaExtractor‑based muxing to combine separately encoded video and audio. Worked end‑to‑end in demo, required handling codec power‑of‑two resolutions, presentationTimeUs syncing, lifecycle ordering, and uploads via Firebase.
AI-written summary · about
chapters (10)
- 0:00Introduction
- 6:46Improving video feedback
- 13:58Abandoning MediaProjection
- 17:10Custom solution requirements
- 22:51Dialogue overlay with reflection
- 26:50Debugging media codec sync
- 33:53Lifecycle and stream sync
- 37:25Balancing size and quality
- 38:49Live demo
- 42:29Q&A
related talks
47mRewind and Resolve: A deep dive into building Session Replay for Android
38mCrafting delightful Camera & Media experiences
39mBuilding Camera and Media Apps That Run Anywhere
40mVideo Processing on Android
18mPresenting a high-quality media experience for all users
15mComplement your media editing pipeline with Media3
23mRewind capture format on IG Stories
38mRendering Video: A Detailed Look at Video Playback on Android
