The video player SDK
Native SDKs.
One API.
Native playback on every platform behind a single, mirrored API — live & DVR, multi-DRM, Google IMA & FreeWheel ads, subtitles, casting, content ratings and a fully themeable player UI.
Free to evaluate — the full SDK, every feature, no sign-up, no time limit. The player shows a small OGPlayer watermark until a license key removes it.
The actual player chrome — identical on every platform.
Every feature, every platform
Distilled from the cross-platform parity matrix — dig into any of them in the guides.
Playlists & up next
Queue videos that auto-advance — per-item DRM and ads, a themeable countdown card, and a skip callback for analytics.
Vertical feed
A swipeable portrait feed on the same engine — player pool with instant swipes, split layouts, sponsored items, host rail.
Multi-DRM WV · PR · FP
Widevine, PlayReady and FairPlay behind one config — the SDK picks whichever the device supports, with rotating-token providers.
Live & DVR
Live edge, seekable DVR windows, low-latency HLS, behind-edge state — the chrome adapts to the stream type automatically.
Ads IMA · FreeWheel
Pre/mid/post-roll pods with SDK-drawn ad chrome, cue markers, skip handling and an ad-blocker policy on web.
Subtitles & audio
Embedded and sideloaded tracks, multi-language audio, styling and viewer-controlled text size.
Watermarks & overlays
Your overlays in nine anchored slots — the SDK keeps them clear of the controls and hides them during ads.
Content ratings
Kijkwijzer-style age and descriptor icons at program start — presets built in, your own artwork pluggable.
Theming & localisation
Color and dimension tokens, replaceable glyphs, up to eight of your own icons — and every word and screen-reader label of the chrome in your language.
Casting
Chromecast on Android, AirPlay on iOS — with a configurable button in the player chrome.
Offline downloads
Download VOD on Android and iOS — persistent DRM license included — and play it back with zero network.
Picture-in-picture
Content keeps playing in a small window on Android, iOS and the web — auto-enter on leaving the app (on the web, where the browser offers it), one switch to enable.
Don't take our word for it
The full demo runs in your browser — real streams, real DRM, real ads, no signup. Better yet: paste your own stream URL and watch it play in our player.
Write it once. Ship it everywhere.
The same class names, the same listeners, the same error codes — an integration ports between platforms almost mechanically.
val player = OGPlayer.Builder(context)
.setLicenseKey("OGP1…")
.build()
player.load(
OGMediaItem.Builder("https://…/master.m3u8")
.setTitle("Tears of Steel")
.build(),
) let player = OGPlayer(licenseKey: "OGP1…")
if let item = OGMediaItem(
urlString: "https://…/master.m3u8",
title: "Tears of Steel"
) {
player.load(item)
} const player = new OGPlayer({ licenseKey: "OGP1…" });
document.querySelector("og-player").player = player;
player.load({
url: "https://…/master.m3u8",
title: "Tears of Steel",
}); <OGPlayerView
licenseKey="OGP1…"
source={{
url: "https://…/master.m3u8",
title: "Tears of Steel",
}}
/> OGPlayerView(
licenseKey: 'OGP1…',
source: OGMediaItem(
url: 'https://…/master.m3u8',
title: 'Tears of Steel',
),
) Native, modern on every platform
No XML layouts, no UIKit wrappers, no jQuery-era widgets — the player UI is built exclusively on each platform's modern toolkit.
Media3/ExoPlayer engine with a Compose-only player UI — drop OGPlayerView straight into your Compose tree. Published AAR artifacts.
AVFoundation engine with a SwiftUI-only player view — OGPlayerView is a native SwiftUI citizen. Swift Package Manager.
hls.js with native-HLS fallback and DASH via dash.js, a framework-agnostic <og-player> element — npm package or a single script tag.
The same players on the big screen with a remote-control chrome: Android TV and Fire TV from the Android SDK, Apple TV from the iOS SDK, and Samsung Tizen and LG webOS from the web SDK's ogplayer/tv bundle with HLS and DASH — 2020 models and newer.
The same native players behind a typed Fabric component — <OGPlayerView> from npm wraps the Android and iOS SDKs, so playback, DRM and ads never leave native code.
The same native players behind one widget — OGPlayerView from pub.dev wraps the Android and iOS SDKs as a platform view, so playback, DRM and ads never leave native code.