用于Flutter的视频播放器插件在部署到Firebase托管时不能正常工作



我已经从https://pub.dev/packages/video_player构建了使用video_player 2.6.0包的小部件。

这是代码:

import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';
void main() => runApp(const VideoApp());
/// Stateful widget to fetch and then display video content.
class VideoApp extends StatefulWidget {
const VideoApp({super.key});
@override
_VideoAppState createState() => _VideoAppState();
}
class _VideoAppState extends State<VideoApp> {
late VideoPlayerController _controller;
@override
void initState() {
super.initState();
_controller = VideoPlayerController.network(
'https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4')
..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.isInitialized
? 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();
}
}

我可以在Chrome上调试时播放视频,但当我部署到Firebase托管遵循此指令https://firebase.google.com/docs/hosting时,该视频无法播放。

你能帮我解决这个问题吗?谢谢。

video_player 2.6.0包的示例部分执行相同的代码。

注:For Web, not all video formats are supported

Web平台不支持dart:io,因此避免使用VideoPlayerController。插件的文件构造函数。使用构造函数尝试创建一个VideoPlayerController。将抛出UnimplementedError的文件。

  • 不同的浏览器可能有不同的视频播放功能(支持的格式,自动播放…)。

  • VideoPlayerOptions。mixwiththothers选项不能在web中实现,至少目前是这样。如果您在web中使用此选项,它将被静默忽略。

支持格式

在Web上,可用的格式取决于用户的浏览器(供应商和版本)。

Web平台的限制

Web平台上的视频播放有一些限制,可能会让更熟悉移动/桌面目标的开发人员感到惊讶。

排序不分先后:

飞镖:io

web平台不支持dart:io,所以尝试创建一个VideoPlayerController。文件将抛出UnimplementedError。

播放

尝试播放带有音轨(或未静音)的视频而没有用户与站点交互("用户激活")将被浏览器禁止,并导致JS运行时错误。

查看package:video_player_web获取更多web相关信息。

最新更新