
Player SDK — TF1 Group
TF1+
One player engine, powering every app in the group.
- Context
- Behind TF1+, France's leading private streaming platform, sits a dedicated player team — the IT department's very first component team, created to extract the player from MyTF1 (soon to become TF1+) and ship it as an SDK to teams across the group: TF1+, TF1 Info (LCI) and TFou Max.
- Challenge
- Every app needs a different player. TFou Max is a paid kids' service — no advertising module at all. TF1 Info lives on live news. TF1+ needs the full premium stack: ads, DRM, start-over, live and VOD. The challenge: one modular, à-la-carte player that each integrating team can assemble to its needs — on iOS and tvOS — without ever forking the code.
- Solution
- As tech lead of the player team, built a modular SDK on AVPlayer where every capability is a pluggable module — advertising, FairPlay DRM, start-over and 4-hour DVR, Chromecast and AirPlay, picture-in-picture — behind one consistent API, mirrored on tvOS. Industrialized the whole pipeline along the way: CI from Bitrise to GitHub Actions, Gherkin/Cucumber tests shared with Android and Web, remote feature flags, a Cocoapods-to-SPM overhaul, and a SwiftUI rebuild driven by a Figma design system.
- Swift
- SwiftUI
- AVPlayer
- HLS
- FairPlay DRM
- tvOS
- SDK Design
Impact
A single player engine now drives playback across TF1+, TF1 Info and TFou Max — millions of streams a day on one codebase. Playback quality improves everywhere at once, and modularity turned even switching ad providers into a configuration change instead of a rewrite.


















