video_player_web_hls 1.3.0 
video_player_web_hls: ^1.3.0 copied to clipboard
Web platform implementation of video_player and supports hls on chrome and other browsers.
video_player_web_hls #
Supports hls on chrome and other browsers.
Usage #
...
dependencies:
  ...
  video_player_web_hls: ^0.1.1
  video_player: ^0.10.10
  ...
Add
 <script src="https://cdn.jsdelivr.net/npm/hls.js@latest"  type="application/javascript"></script>
in index.html above
 <script src="main.dart.js" type="application/javascript"></script>
dart:io #
The Web platform does not suppport dart:io, so attempts to create a VideoPlayerController.file will throw an UnimplementedError.
Autoplay #
Playing videos without prior interaction with the site might be prohibited by the browser and lead to runtime errors. See also: https://goo.gl/xX8pDD.
Supported Formats #
Different web browsers support different sets of video codecs.
Video codecs? #
Check MDN's Web video codec guide to learn more about the pros and cons of each video codec.
What codecs are supported? #
Visit caniuse.com: 'video format' for a breakdown of which browsers support what codecs. You can customize charts there for the users of your particular website(s).
Here's an abridged version of the data from caniuse, for a Global audience:
MPEG-4/H.264
WebM
Ogg/Theora
AV1
HEVC/H.265
Example #
import 'package:video_player/video_player.dart';
import 'package:flutter/material.dart';
void main() => runApp(VideoApp());
class VideoApp extends StatefulWidget {
  @override
  _VideoAppState createState() => _VideoAppState();
}
class _VideoAppState extends State<VideoApp> {
  VideoPlayerController _controller;
  @override
  void initState() {
    super.initState();
    _controller = VideoPlayerController.network(
        'https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8')
      ..initialize().then((_) {
        // Ensure the first frame is shown after the video is initialized, even before the play button has been pressed.
        setState(() {});
      });
  }
  @override
  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.value.isPlaying
                  ? _controller.pause()
                  : _controller.play();
            });
          },
          child: Icon(
            _controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
          ),
        ),
      ),
    );
  }
  @override
  void dispose() {
    super.dispose();
    _controller.dispose();
  }
}




