ogplayer_flutter 1.1.0 copy "ogplayer_flutter: ^1.1.0" to clipboard
ogplayer_flutter: ^1.1.0 copied to clipboard

OGPlayer — a full-featured video player SDK for Flutter. HLS/DASH, DRM, IMA ads, offline downloads, playlists, PiP and a customizable player UI, powered by the native OGPlayer Android and iOS SDKs.

OGPlayer Flutter #

One video player API across Android, iOS, web — and Flutter.

ogplayer_flutter is a thin platform-view wrapper over the published OGPlayer native SDKs: the same Maven Central AAR and the same XCFrameworks that native apps use. Rendering, playback, DRM, ads and the player chrome are 100% native; this package adds a typed Dart API and an OGPlayerView widget.

import 'package:ogplayer_flutter/ogplayer_flutter.dart';

AspectRatio(
  aspectRatio: 16 / 9,
  child: OGPlayerView(
    source: const OGMediaItem(
      url: 'https://cdn.example.com/master.m3u8',
      title: 'My stream',
    ),
    onStateChanged: (state) => debugPrint('$state'),
  ),
)

Features #

VOD, live and live-DVR · multi-DRM (Widevine / FairPlay) with a Dart tokenProvider called on every license request · Google IMA ads · playlists with a themeable "Up next" card · a swipeable vertical video feed (OGVerticalFeedView) · offline downloads with offline DRM (OGDownloads) · picture-in-picture · embedded + sideloaded subtitles, multi-audio, quality selection · full native player chrome (configurable down to headless, with your own action icons by name) · watermark overlays in nine anchored slots · posters, content ratings, custom error copy and styling · one event stream mirroring the native listeners.

Not yet available in Flutter: FreeWheel ads (use the native Android/iOS SDKs if you need them today).

The vertical feed is a portrait surface. On Android it pins the activity portrait while mounted and restores your app's own orientation on unmount (large-screen devices ignore orientation pins by platform policy). On iOS it follows your app's interface-orientation mask: with the plugin's AppDelegate hook in place (see the iOS requirements below) the app is portrait outside player fullscreen, so the feed is too — an app that allows landscape will rotate the feed.

Install #

flutter pub add ogplayer_flutter

The Android SDK resolves from Maven Central; the iOS side resolves the OGPlayer Swift package (Swift Package Manager projects) or ships the same XCFrameworks inside this package (CocoaPods projects). This package wraps OGPlayer Android 1.1.0 and OGPlayer iOS 1.1.0.

Requirements #

  • Flutter 3.29+

  • Android: minSdk 26, and your MainActivity must extend FlutterFragmentActivity (the player UI needs an androidx lifecycle owner; picture-in-picture needs a ComponentActivity):

    import io.flutter.embedding.android.FlutterFragmentActivity
    
    class MainActivity : FlutterFragmentActivity()
    
  • Android: core-library desugaring enabled (Media3 requirement) — in android/app/build.gradle.kts:

    compileOptions {
        isCoreLibraryDesugaringEnabled = true
    }
    dependencies {
        coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5")
    }
    
  • Android + pipEnabled: add android:supportsPictureInPicture="true" to your activity in the app manifest.

  • Android + castEnabled: declare the Cast options provider in your app manifest — <meta-data android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME" android:value="com.ogplayer.cast.OGCastOptionsProvider"/>

  • Android + icon names (CustomActionConfig.iconName, OverlayConfig.imageName, icon-name overrides): these resolve app drawables by name at runtime, which Flutter's default release build would strip (resource shrinking can't see runtime lookups). Prefix the drawable names with og_ (e.g. og_action_share) and the plugin's bundled shrinker rule keeps them automatically — nothing to configure. For names you can't prefix, add your own android/app/src/main/res/raw/keep.xml with tools:keep="@drawable/my_icon".

  • iOS: 18.0+ (iPhone XS/XR 2018 and newer)

  • iOS + fullscreen rotation: declare landscape orientations in your Info.plist and forward supportedInterfaceOrientationsFor to OgplayerFlutterPlugin.interfaceOrientationMask in your AppDelegate (two lines — see the example app). Without it the player stays embedded.

  • iOS + pipEnabled: add UIBackgroundModes: audio to your Info.plist.

  • iOS + OGDownloads: downloads that finish while the app isn't running relaunch it in the background — forward application(_:handleEventsForBackgroundURLSession:completionHandler:) to OgplayerFlutterPlugin.handleDownloadBackgroundEvents in your AppDelegate (see the example app).

Controlling playback #

Commands go through the controller handed to onViewCreated:

OGPlayerViewController? player;

OGPlayerView(
  source: item,
  onViewCreated: (c) => player = c,
);

// later
player?.pause();
player?.seekTo(30000);
player?.enterFullscreen();

Docs #

Full guides and the API reference: https://ogplayer.tv/docs

License #

OGPlayer is commercial software — free to evaluate (the player renders an OGPlayer watermark); production use requires a license key. See LICENSE · https://ogplayer.tv/terms/ · sales@ogplayer.tv

0
likes
0
points
346
downloads

Documentation

Documentation

Publisher

unverified uploader

Weekly Downloads

OGPlayer — a full-featured video player SDK for Flutter. HLS/DASH, DRM, IMA ads, offline downloads, playlists, PiP and a customizable player UI, powered by the native OGPlayer Android and iOS SDKs.

Homepage

License

unknown (license)

Dependencies

flutter

More

Packages that depend on ogplayer_flutter

Packages that implement ogplayer_flutter