vdocipher_flutter 1.0.0-alpha.1 vdocipher_flutter: ^1.0.0-alpha.1 copied to clipboard
VdoCipher plugin for flutter apps.
vdocipher_flutter #
VdoCipher plugin for flutter apps.
This project is a Flutter plugin package, that will enable video playback functionality by delegating to respective native libraries based on the platform.
Note: #
- Please contact us at support@vdocipher.com before using it in your application
- IOS is not supported. Only Android support available. IOS support will be added in future.
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: ^1.0.0-alpha.1
Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.
Import it
Now in your Dart code, you can use:
import 'package:vdocipher_flutter/vdocipher_flutter.dart';
Example #
vdoplayback_view.dart #
import 'package:flutter/material.dart';
import 'package:vdocipher_flutter/vdocipher_flutter.dart';
const EmbedInfo _embedInfo = EmbedInfo.streaming(
otp: '20160313versASE313BlEe9YKEaDuju5J0XcX2Z03Hrvm5rzKScvuyojMSBZBxfZ',
playbackInfo: 'eyJ2aWRlb0lkIjoiM2YyOWI1NDM0YTVjNjE1Y2RhMThiMTZhNjIzMmZkNzUifQ==',
embedInfoOptions: EmbedInfoOptions(
autoplay: true
)
);
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: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Flexible(child: Container(
child: VdoPlayer(
embedInfo: _embedInfo,
onPlayerCreated: (controller) => _onPlayerCreated(controller),
onFullscreenChange: _onFullscreenChange),
width: MediaQuery.of(context).size.width,
height: _isFullScreen.value ? MediaQuery.of(context).size.height : _getHeightForWidth(MediaQuery.of(context).size.width),
)),
ValueListenableBuilder(
valueListenable: _isFullScreen,
builder: (context, value, child) {
return value ? SizedBox.shrink() : _nonFullScreenContent();
})
])
);
}
_onPlayerCreated(VdoPlayerController controller) {
setState(() {
_controller = controller;
});
}
_onFullscreenChange(isFullscreen) {
setState(() {
_isFullScreen.value = isFullscreen;
});
}
_nonFullScreenContent() {
return Column(
children: [
Text('Sample Playback', style: TextStyle(fontSize: 20.0),)
]);
}
double _getHeightForWidth(double width) {
return width / aspectRatio;
}
}
VdoPlayer #
Property | Type | Description |
---|---|---|
embedInfo | EmbedInfo | Embed info object |
onPlayerCreated(controller) | Function(VdoController) | Callback function returns VdoController object |
EmbedInfo #
Property | Type | Description |
---|---|---|
offline | bool (Default false) | Video will be offline or online |
otp | String | a valid OTP |
playbackInfo | String | A valid playbackinfo; |
mediaId | String | A valid mediaId |
embedInfoOptions | EmbedInfoOptions | Embed Info options |
EmbedInfoOptions #
Property | Type | Description |
---|---|---|
safetyNetApiKey | String | A valid SafetyNetApiKey |
preferredCaptionsLanguage | String | Preferred caption language |
startPosition | Duration | Video start position |
endPosition | Duration | Video end position |
resumePosition | Duration | Vdeo resume position |
maxVideoBitrateKbps | int | Maximum video bitrate KBPS |
bufferingGoalMs | int | Buffering goal in MS |
techOverride | List<String> |
Tech override list |
disableAnalytics | bool (Default false) | Disable analytics |
autoplay | bool (Default true) | Start autoplay |
forceLowestBitrate | bool (Default false) | Force lowest bitrate |
forceHighestSupportedBitrate | bool (Default false) | Force highest supported Bitrat |
VdoController #
Property | Return Type | Description |
---|---|---|
isPlaying | bool | Video playing |
isBuffering | bool | Video buffering |
isLoading | bool | Video loading |
isEnded | bool | Video fully watched |
isFullScreen | ValueNotifier<bool> |
Video is in full screen or portrait mode |
enterFullScreen(bool isFull) | void | Set full screen mode |
load(EmbedInfo embedInfo) | Future<LoadResult> |
Load video with embed info |
play() | Future<void> |
Play video |
pause() | Future<void> |
Pause video |
stop() | Future<void> |
Stop video |
getDuration() | Future<Duration> |
Get video duration |
getPosition() | Future<Duration> |
Get current video played position |
seek(Duration target) | Future<void> |
Seek video to target duration |
setPlaybackSpeed(double speed) | Future<void> |
Set playback speed |
setCaptionLanguage(String language) | Future<bool> |
Set Caption Language |