当覆盖视频出现在其他应用程序的屏幕上时,Flutter Video Player 会自动暂停

Flutter Video Player Automatically Pauses when overlay video appears on screen of other application

我的应用程序屏幕中有一个循环播放的背景。当我们更改屏幕和更改应用程序状态时(pause/resume),视频工作正常,但存在一个大问题。当我在 Netflix 等其他应用程序中播放视频并关闭 Netflix 应用程序并打开我的应用程序时。弹出视频出现在 phone 屏幕上,当视频在弹出窗口中播放时,我的应用程序中的视频会自动播放。我将向您展示一个实际发生的例子。请打开这个 link 我也添加了我的应用程序的屏幕录制。您可以了解实际发生的情况。

Screen Recording of the application

这是我用于我的视频播放器的代码

late VideoPlayerController _controller;

处于小部件的初始状态

videoPlayerBloc = context.read<VideoPlayerBloc>();
_controller = VideoPlayerController.asset('assets/videos/intro.mp4')
  ..initialize().then((_) {
    videoPlayerBloc.add(PlayVideo());
    _controller.play();
    _controller.setLooping(true);
    setState(() {});
  });

WidgetsBinding.instance!.addObserver(
    LifecycleEventHandler(resumeCallBack: () async =>
        videoPlayerBloc.add(PlayVideo()), suspendingCallBack: () async {
    })
);

在Widget的build方法中

BlocListener<VideoPlayerBloc, VideoPlayerState>(
        listener: (context, state) {
          _controller = VideoPlayerController.asset('assets/videos/intro.mp4')
            ..initialize().then((_) {
              _controller.play();
              _controller.setLooping(true);
              setState(() {});
            });
        },
        child: SizedBox.expand(
          child: FittedBox(
            fit: BoxFit.cover,
            child: SizedBox(
              width: _controller.value.size.width,
              height: _controller.value.size.height,
              child: Opacity(
                  opacity: 0.75,
                  child: VideoPlayer(_controller)),
            ),
          ),
        )
    )

如有任何帮助,我们将不胜感激。这是我第一次遇到堆栈溢出。希望能得到观众的积极响应。

https://pub.dev/documentation/video_player_platform_interface/latest/video_player_platform_interface/VideoPlayerOptions-class.html

您需要设置视频播放器选项https://pub.dev/documentation/video_player_platform_interface/latest/video_player_platform_interface/VideoPlayerOptions/mixWithOthers.html

mixWithOthers 属性 为 true 以继续播放您的视频:)

这些选项是 VideoPlayerController 构造函数的一部分

VideoPlayerController(videoPlayerOptions: VideoPlayerOptions(mixWithOthers: true),);