Playback engineering
Media3 and ExoPlayer video playback engineering
Most of my Android playback work runs through Media3, the AndroidX library that includes ExoPlayer. The stream itself is only the first layer: adaptive bitrate has to hold on a weak connection, DRM has to protect the content, ads have to slot into the timeline cleanly, and the player has to survive a channel change without leaking memory.
HLS and DASH, live and on demand
At FreeCast I built HLS and DASH playback for live linear television and on-demand video, protected with Widevine DRM. On the ingest side I worked further upstream: integrating OTA tuner hardware, HDHomeRun, AirTV, Alticast and PDAQ, through GStreamer media pipelines, so a broadcast signal came out the other end as a secure HLS or DASH stream a player could consume. I owned that whole path: DRM, program guide data, tuner orchestration and transcoding, not only the client that played the result.
DRM and ad insertion
I work with Widevine and PlayReady, and Claro TV+ streamed 4K with multi-DRM protection. On the advertising side I work with the Google IMA SDK and with both server-side and client-side ad insertion (SSAI and CSAI).
Keeping playback stable
A leak that only shows up on the tenth video is still a bug your users will hit. I debug playback lifecycle issues and memory leaks with the Android Profiler, and I use crash and performance monitoring such as Firebase Crashlytics and New Relic to see how playback behaves on real devices.
Questions I get about playback work
- Do you work in Media3 or the older ExoPlayer APIs?
- Media3. Google describes Jetpack Media3 as the new home for Android media libraries, with ExoPlayer as the default implementation of its Player interface.
- What ad insertion have you built?
- Server-side and client-side ad insertion (SSAI and CSAI) with the Google IMA SDK.
- Have you worked below the player, on the video ingest itself?
- Yes. At FreeCast I integrated OTA tuner hardware, HDHomeRun, AirTV, Alticast and PDAQ, through GStreamer pipelines into HLS and DASH, and owned the DRM, EPG and transcoding around it.
- How do you handle DRM?
- Widevine and PlayReady. FreeCast's live and on-demand streams were protected with Widevine, and Claro TV+ streamed 4K with multi-DRM.
Related pages
Android TV app development, Fire TV app development, and Apple TV app development.
Talk about a playback build
Get in touch about your app.
Reach me on LinkedIn, or read the full role history in my CV.