视频小部件无法播放 "无法在通道上建立连接"

4

你好,我一直在尝试在我的flutter应用程序中播放背景视频,所以我遵循了这个问题这个教程

我得到了以下代码:

import 'package:flutter/material.dart';

void main() => runApp(VideoWidget());

class VideoWidget extends StatefulWidget {
  @override
  _VideoWidgetState createState() => _VideoWidgetState();
}

class _VideoWidgetState extends State<VideoWidget> {
  VideoPlayerController _controller;

  @override
  void initState() {
    super.initState();
    _controller = VideoPlayerController.asset("images/background.mov")
      ..initialize().then((_) {
        _controller.setLooping(true);
        _controller.play();
        // 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 Center(
      child: _controller.value.initialized
          ? AspectRatio(
              aspectRatio: _controller.value.aspectRatio,
              child: VideoPlayer(_controller),
            )
          : Container(),
    );
  }

  @override
  void dispose() {
    super.dispose();
    _controller.dispose();
  }
}

我确保视频在图像文件夹pubspec.yaml上都是可用的:


environment:
  sdk: ">=2.7.0 <3.0.0"

dependencies:
  hovering: ^1.0.2
  flutter:
    sdk: flutter


  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^1.0.1
  video_player: ^0.10.5+2

dev_dependencies:
  flutter_test:
    sdk: flutter

# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec

# The following section is specific to Flutter.
flutter:

  # The following line ensures that the Material Icons font is
  # included with your application, so that you can use the icons in
  # the material Icons class.
  uses-material-design: true

  # To add assets to your application, add an assets section, like this:
  assets:
    - images/2x/IconWithText.png
    - images/IconWithText.png
    - images/background.mov

但是在构建应用程序后,我遇到了以下错误:

[ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: PlatformException(channel-error, Unable to establish connection on channel., null, null)
#0      VideoPlayerApi.create (package:video_player_platform_interface/messages.dart:199:7)
<asynchronous suspension>
#1      MethodChannelVideoPlayer.create (package:video_player_platform_interface/method_channel_video_player.dart:46:31)
<asynchronous suspension>
#2      VideoPlayerController.initialize (package:video_player/video_player.dart:275:18)
<asynchronous suspension>
#3      _VideoWidgetState.initState.<anonymous closure> (package:myapp/video_widget.dart)
<asynchronous suspension>

我这样调用VideoWidget:

@override
  Widget build(BuildContext context) {
    var isLogged = false;
    var column = Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        VideoWidget(),
        Table(

我是Dart和Flutter的初学者,如果需要更多信息来帮助解决问题,请务必提出,感谢您的帮助!

2个回答

11

再次运行应用程序。有时插件需要关闭应用程序并重新运行才能正常工作。


2
如果您使用的是Windows系统,请停止正在运行的应用程序,并在终端中运行以下命令:flutter clean; flutter pub get,然后再次运行该应用程序,它将开始正常工作。 - Maruf Hassan

3

从您的依赖项来看,您的版本太旧了,请先尝试将其升级到1.0.1,因为您的错误似乎来自您的依赖关系。


video_player: ^1.0.1 ? - Starless
我尝试使用 video_player: ^1.0.1,然后重新启动应用程序,但最终仍然遇到了同样的问题。 - Starless
1
video_player所使用的依赖项已支持视频格式,请在此链接https://exoplayer.dev/supported-formats.html进行检查,因为video_player使用exoplayer作为播放器。 - iqbal rahardian
@iqbalrahardian 谢谢... 结果发现由iOS相机录制的.MOV文件不受支持。 - maganap

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接