Skip to content
Few of the resources from flutter plugin video_player
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
ScreenShot Image Snapshot is added May 15, 2019
android Suppport for HLS File is Fixed May 20, 2019
example Suppport for HLS File is Fixed May 20, 2019
ios Initial commit May 15, 2019
lib Initial commit May 15, 2019
.gitignore Initial commit May 15, 2019
.metadata Initial commit May 15, 2019 Suppport for HLS File is Fixed May 20, 2019
LICENSE License Is Updated May 15, 2019
drm_wv_fp_player.iml Initial commit May 15, 2019
pubspec.lock Initial commit May 15, 2019
pubspec.yaml Suppport for HLS File is Fixed May 20, 2019

drm_wv_fp_player (Beta Version)

An awesome Flutter plugin for Playing Widevine and Fairplay(Incomplete still) DRM Contents For Android and IOS Phones

Getting Started

This project is a starting point for a Flutter app for VOD based Apps We have Integrated DRM for Flutter based VOD App The development is Premature stage and I need volunteers to work on the IOS counter part We used Android's Exoplayer,Framework to integrate in Native Android And video_player, in flutter the following project is the combination of both Exoplayer and video_player (I don't have Mac-System to work on IOS part) The project is still in beta stage. And I am trying to get all help i can get I have completed 30% of the project.I will complete the remaining, once I get the time or resources

Flutter Plugin

plug-in package, a specialized package that includes platform-specific implementation code for Android and/or iOS.

For help getting started with Flutter, view Google's online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.


First, add drm_wv_fp_player as a dependency in your pubspec.yaml file.


Warning: Still have to wait


Ensure the following permission is present in your Android Manifest file, located in `/android/app/src/main/AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET"/>

The Flutter project template adds it, so it may already be there.

Supported Formats

  • On Android, the backing player is ExoPlayer, please refer here for list of supported formats.


  • Widevine is currently supported
  • HDCP Compilence is seems to be working
  • Playready is not functional in android
  • Fairplay I need a MAC book and Apple Account
  • DASH is supported with adaptive streaming
  • MULTI-DRM Sample will be added once Fairplay is Fixed
  • All Functionality of Exoplayer will be replicated.


import 'package:drm_wv_fp_player/drm_wv_fp_player.dart';
import 'package:drm_wv_fp_player/model/secured_video_content.dart';

void main() => runApp(VideoApp());

class VideoApp extends StatefulWidget {
  _VideoAppState createState() => _VideoAppState();

class _VideoAppState extends State<VideoApp> {
  VideoPlayerController _controller;

  void initState() {
      _controller = VideoPlayerController.exoplayerMeidaFrameWork(MediaContent(
        name: "WV: Secure SD (cenc,MP4,H264)",//Can be null
        uri: '',//Google Test Content
        extension: null,//Extension can be added like (mpd,m3u8)
        drm_scheme: 'widevine',
        drm_license_url: '', //Google Test License
        ad_tag_uri: null,//Pending work
        spherical_stereo_mode: null, //Pending Work
        playlist: null, //Pending Work
        ..initialize().then((_) {
          // Ensure the first frame is shown after the video is initialized, even before the play button has been pressed.
          setState(() {});

  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Video Demo',
      home: Scaffold(
        body: Center(
          child: _controller.value.initialized
              ? AspectRatio(
                  aspectRatio: _controller.value.aspectRatio,
                  child: VideoPlayer(_controller),
              : Container(),
        floatingActionButton: FloatingActionButton(
          onPressed: () {
            setState(() {
                  ? _controller.pause()
          child: Icon(
            _controller.value.isPlaying ? Icons.pause : Icons.play_arrow,

  void dispose() {


  1. DARWIN V TOMY, --Yep that's meee
  2. Imiginary Friend
  3. Motivatiors
  4. And My Computer which keeps hanging while i work on Android Studio
  5. Google Search
  • LinkdIn, If any one wants Connect me. I am happy to help
  • PayPal, In case If anyone wants to buy me a ☕️
You can’t perform that action at this time.