Press ESC to close

Flutter App : A simple and easy-to-use video player for flutter web & mobile devices

pod_player

pub likes
pub version
popularity
pub points

Video player for flutter web & mobile devices, pod player supports playing video from `Youtube` and `Vimeo`

pod player is a simple and easy-to-use video player. Its video controls are similar to Youtube player (with customizable controls) and also can play videos from Youtube and Vimeo (By providing url/video_id).

This plugin built upon flutter’s official video_player plugin


PLATFORM AVAILABLE
Android
IOS
WEB

Features

  • Play youtube videos (using video URL or ID)
  • Play vimeo videos (using video ID)
  • Play vimeo private videos (using video ID, access token)
  • Video overlay similar to youtube
  • Double tap to seek video.
  • On video tap show/hide video overlay.
  • Auto hide overlay
  • Change playback speed
  • Custom overlay
  • Custom progress bar
  • Custom labels
  • Change video quality (for vimeo and youtube)
  • Enable/disable fullscreen player
  • support for live youtube video
  • [TODO] support for video playlist

Features on web

  • Double tap on Video player to enable/disable fullscreen

  • Mute/unmute volume

  • Video player integration with keyboard

    • SPACE play/pause video
    • M mute/unMute video
    • F enable/disable fullscreen
    • ESC enable/disable fullscreen
    • -> seek video forward
    • <- seek video backward
  • Double tap on video (enable/diables fullscreen)

Demo


    pod_player








              pod_player

              Usage

              Installation


              Android


              Ios


              Web ( Not recommended in production)


              package

              using flutter_cors package to enable or disable CORS

              To Enable CORS (run this command )

              dart pub global activate flutter_cors
              fluttercors --enable
              

              To Disable CORS (run this command )

              fluttercors --disable
              

              How to use


              import 'package:pod_player/pod_player.dart'; import 'package:flutter/material.dart'; class PlayVideoFromNetwork extends StatefulWidget { const PlayVideoFromNetwork({Key key}) : super(key: key); @override State<PlayVideoFromNetwork> createState() => _PlayVideoFromNetworkState(); } class _PlayVideoFromNetworkState extends State<PlayVideoFromNetwork> { final PodPlayerController controller; @override void initState() { controller = PodPlayerController( playVideoFrom: PlayVideoFrom.network( 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerFun.mp4', ), )..initialise(); super.initState(); } @override void dispose() { controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( body: PodVideoPlayer(controller: controller), ); } }

              Configure pod player

                controller = PodPlayerController(
                  playVideoFrom: PlayVideoFrom.youtube('https://youtu.be/A3ltMaM6noM'),
                  podPlayerConfig: const PodPlayerConfig(
                    autoPlay: true,
                    isLooping: false,
                    videoQualityPriority: [720, 360]
                  )
                )..initialise();

              Add Thumbnail

              PodVideoPlayer(
                controller: controller,
                videoThumbnail: const DecorationImage(
                  /// load from asset: AssetImage('asset_path')
                  image: NetworkImage('https://images.unsplash.com/photo-1569317002804-ab77bcf1bce4?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxzZWFyY2h8MXx8dW5zcGxhc2h8ZW58MHx8MHx8&w=1000&q=80',
                  ),
                  fit: BoxFit.cover,
                ),
              ),

              Add PodPlayerLabels (custom labels)

              @override
              Widget build(BuildContext context) {
                return Scaffold(
                  body: PodVideoPlayer(
                    controller: controller,
                    podPlayerLabels: const PodPlayerLabels(
                      play: "Play label customized",
                      pause: "Pause label customized",
                      ...
                    ),
                  ),
                );
              }

              How to play video from youtube


              import 'package:pod_player/pod_player.dart'; import 'package:flutter/material.dart'; class PlayVideoFromYoutube extends StatefulWidget { const PlayVideoFromYoutube({Key key}) : super(key: key); @override State<PlayVideoFromYoutube> createState() => _PlayVideoFromYoutubeState(); } class _PlayVideoFromYoutubeState extends State<PlayVideoFromYoutube> { final PodPlayerController controller; @override void initState() { controller = PodPlayerController( playVideoFrom: PlayVideoFrom.youtube('https://youtu.be/A3ltMaM6noM'), )..initialise(); super.initState(); } @override void dispose() { controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( body: PodVideoPlayer(controller: controller), ); } }

              How to play video from vimeo


              import 'package:pod_player/pod_player.dart'; import 'package:flutter/material.dart'; class PlayVideoFromVimeo extends StatefulWidget { const PlayVideoFromVimeo({Key key}) : super(key: key); @override State<PlayVideoFromVimeo> createState() => _PlayVideoFromVimeoState(); } class _PlayVideoFromVimeoState extends State<PlayVideoFromVimeo> { final PodPlayerController controller; @override void initState() { controller = PodPlayerController( playVideoFrom: PlayVideoFrom.vimeo('518228118'), )..initialise(); super.initState(); } @override void dispose() { controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( body: PodVideoPlayer(controller: controller), ); } }

              How to play video from vimeo private videos


              import 'package:pod_player/pod_player.dart'; import 'package:flutter/material.dart'; class PlayVideoFromVimeoPrivateVideo extends StatefulWidget { const PlayVideoFromVimeoPrivateVideo({Key key}) : super(key: key); @override State<PlayVideoFromVimeoPrivateVideo> createState() => _PlayVideoFromVimeoPrivateVideoState(); } class _PlayVideoFromVimeoPrivateVideoState extends State<PlayVideoFromVimeoPrivateVideo> { final PodPlayerController controller; @override void initState() { String videoId = 'your private video id'; String token = 'your access token'; final Map<String, String> headers = <String, String>{}; headers['Authorization'] = 'Bearer ${token}'; controller = PodPlayerController( playVideoFrom: PlayVideoFrom.vimeoPrivateVideos( videoId, httpHeaders: headers ), )..initialise(); super.initState(); } @override void dispose() { controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( body: PodVideoPlayer(controller: controller), ); } }

              Options


Footer Example