Flutter playback

Flutter video playback, without a second player to maintain

A Flutter app that plays video usually means a choice: a native player that doesn't match the web one, or a web player wrapped with a bridge that nobody has run in production. We took the second path and proved it at scale.

Bradmax plays inside a Flutter app through a bridge to the same web player that runs on your site and your TV apps, so DRM, ads and analytics behave the same everywhere.

Start Free
Illustration of a mobile device playing video

How the bridge works

The player runs in a WebView inside the Flutter app. A thin bridge carries the commands and events between Dart and the player: load a source, play, pause, seek, and the callbacks for state, errors and progress.

Because playback happens in the player, everything the player supports comes with it. DRM, ad insertion, adaptive bitrate and analytics don't need a separate Flutter implementation.

TISA: six leagues on Flutter

TISA needed playback across a Flutter app and the web for its sports platform, covering 6 leagues, 2 playback models and several monetization layers. The previous vendor had shut down. Bradmax replaced it without interrupting the live calendar, with Flutter support the alternatives didn't offer at the time.

The full account is in the TISA case study.

What comes with the bridge

Multi-DRM in the app

Widevine, PlayReady and FairPlay through the platform WebView, configured the same way as on the web.

Ad insertion

VAST, VMAP and VPAID creatives, including server-side insertion, available in the app.

Adaptive bitrate

The player switches quality to suit the connection, without extra work in the app.

Analytics

Playback quality, errors and engagement reported from the app through the same pipeline as the web.

One player across web, app and TV

The same player and the same QA surface, rather than a separate one per platform.

The bridge and a native SDK, compared

Both are valid choices; they suit different projects.
Criterion Bradmax (web player bridge) Native SDK
Codebases to maintain One web player One per platform
DRM Widevine, PlayReady, FairPlay via the platform Vendor dependent
Web and TV reuse The same player as web and TV apps Separate work
Best when You want reach and one QA surface You must ship native code, such as consoles or set-top boxes

Frequently asked questions

Is this a native Flutter video SDK?

No, and we say so plainly. Bradmax is a web-based player bridged into Flutter. The player runs inside the app and talks to Dart through the bridge. That keeps one codebase across web, mobile and TV, and it's the path TISA runs in production.

Does DRM work from Flutter?

Yes. Playback happens in the player, so Widevine, PlayReady and FairPlay work the same way they do on the web, as long as the platform WebView exposes the DRM module. Android and iOS both do.

What about ads?

The same VAST, VMAP and VPAID support the web player has, including server-side insertion, is available through the bridge.

When should I choose a native SDK instead?

If your project requires a native Java or Objective-C player, for example some console, set-top box or enterprise procurement cases, a vendor that ships native SDKs is the better fit. For a normal Flutter app that needs DRM, ads and reach, the bridge is the lighter choice.

How is the Flutter support maintained?

The Flutter support was built for TISA and is used in production. If you're planning around it, talk to us about its current state before you commit.

Sources and method

  • TISA Flutter and migration story Bradmax TISA case study
  • Player documentation Bradmax player documentation

Talk to us about your Flutter app

If you are planning Flutter playback with DRM or ads, tell us what you need before you build. Start on the free plan, or ask an engineer how the bridge fits your app.