VdoCipher plugin for flutter apps.

pub package GitHub Sample

This Flutter plugin package enables video playback functionality by seamlessly delegating to native libraries tailored for each platform.

Platform Minimum Version
Android API level 21
iOS 12
Web Chrome, Firefox, Safari, Edge

Getting started

Run this command with Flutter:

$ flutter pub add vdocipher_flutter

This will add a line like this to your package's pubspec.yaml (and run an implicit dart pub get):

dependencies:
  vdocipher_flutter: ^2.7.1

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

To import it in your Dart code now, you can use:

import 'package:vdocipher_flutter/vdocipher_flutter.dart';

Note For SDK v2.2.0 and above, please use Theme.AppCompat theme with MainActivity.java and extend from FlutterFragmentActivity. For a better understanding, please take a look at our sample app.

Configuring VdoCipher Player


//Creating embedInfo.
const EmbedInfo SAMPLE_1 = EmbedInfo.streaming(
    otp: '20160313versASE323nOHtQDX5BrcPQRzuzglCjLxHbd1JkvBFvBcPF68ysWD8HN',
    playbackInfo: 'eyJ2aWRlb0lkIjoiNWRlMDlmMGRjYmQ3NGI0NDljOWI1ZjRmYzBmMzI3ZmYifQ==',
    embedInfoOptions: EmbedInfoOptions(
        autoplay: true,
        customPlayerId: "4OEwYIsGO64aBwRp"
    )
);
class VdoPlaybackView extends StatefulWidget {

  @override
  _VdoPlaybackViewState createState() => _VdoPlaybackViewState();
}

class _VdoPlaybackViewState extends State<VdoPlaybackView> {
  VdoPlayerController? _controller;
  final double aspectRatio = 16/9;
  ValueNotifier<bool> _isFullScreen = ValueNotifier(false);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
            body: VdoPlayer(
              embedInfo: embedInfo,
              onPlayerCreated: (controller) => _onPlayerCreated(controller),
              onFullscreenChange: (isFullscreen) {},
              onError: (vdoError) {},
            ));
  }

  _onPlayerCreated(VdoPlayerController? controller) {
    setState(() {
      _controller = controller;
      _onEventChange(_controller);
    });
  }

  _onEventChange(VdoPlayerController? controller) {
    controller!.addListener(() {
      VdoPlayerValue value = controller.value;

      print("VdoControllerListner"
          "\nloading: ${value.isLoading} "
          "\nplaying: ${value.isPlaying} "
          "\nbuffering: ${value.isBuffering} "
          "\nended: ${value.isEnded}"
      );
    });
  }

  double _getHeightForWidth(double width) {
    return width / aspectRatio;
  }
}

Playback Control Methods

Play

Start or resume playing the video.

   _controller?.play()

Pause

Pause video playback.

   _controller?.pause()

Seek

Seek to the specified target position.

   Duration target = Duration(seconds: 30);
   _controller?.seek(target);

Total Played And Total Covered

Returns values of additional properties specific to current playback session. Returned values need to be cast to their expected types before use.

    int? totalPlayed = (await _controller?.getPlaybackProperty('totalPlayed')) as int?;
    int? totalCovered = (await _controller?.getPlaybackProperty('totalCovered')) as int?;

Buffered Position

Returns an estimate of the position up to which data is buffered.

    Future<Duration>? bufferedPosition = _controller?.getBufferedPosition();

Media Duration

Returns the total duration of the video.

    Future<Duration>? duration = _controller?.getDuration();

Playback Position

Returns the current playback position.

    Future<Duration>? position = _controller?.getPosition();

Please find more APIs here

Libraries

vdocipher_flutter
VdoCipher Flutter plugin