视频无法在 flutter web 应用程序中播放

yog*_*der 3 video-player flutter flutter-dependencies flutter-web flutter-video-player

我试图在 flutter web 应用程序中使用 Viedo 作为脚手架小部件的背景,但视频没有显示,尽管它在 android 中工作正常,但没有显示在 web 中,也没有给出任何类型的错误。

我正在使用这个插件来实现视频播放器https://pub.dev/packages/video_player

我的代码:

import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';
class Home extends StatefulWidget {
  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  VideoPlayerController? _videoPlayerController;

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    _videoPlayerController =
    VideoPlayerController.asset("assets/backgroundVideo.mp4")
      ..initialize().then((_) {
        _videoPlayerController!.play();
        _videoPlayerController!.setLooping(true);
        setState(() {});
      });
  }

  @override
  Widget build(BuildContext context) {
    return SafeArea(
        child: Scaffold(
          body: Stack(
            children: <Widget>[
              SizedBox.expand(
                child: FittedBox(
                  fit: BoxFit.fill,
                  child: SizedBox(
                    width: _videoPlayerController!.value.size.width ?? 0,
                    height: _videoPlayerController!.value.size.height ?? 0,
                    child: VideoPlayer(_videoPlayerController!),
                  ),
                ),
              ),
              Container(
                width: 100,
                height: 100,
                child: Text("Hi"),
              )
            ],
          ),
        ));
  }
}
Run Code Online (Sandbox Code Playgroud)

aol*_*san 6

根据截至 2022 年 12 月 15 日更新的 Chrome 政策,如果您想在网络上无需用户交互的情况下自动播放视频。您应该在初始化时将音频静音。假设您在 initState() 中进行了初始化。

  late VideoPlayerController _videoPlayerController;

  @override
  void initState() {
    super.initState();
    _videoPlayerController =
        VideoPlayerController.asset("assets/videoplayback.mp4")
          ..initialize().then((_) {
            _videoPlayerController.setVolume(0);
            _videoPlayerController.play();
            _videoPlayerController.setLooping(true);
            setState(() {});
          });
  }
Run Code Online (Sandbox Code Playgroud)