初始化视频播放器时未找到资源文件

问题描述 投票:0回答:1

我正在尝试加载此视频

assets/videos/heart_beat.mp4
,但是当将其路径传递给
VideoPlayerController
的初始化时,它会抛出此错误:

Playback error
E/ExoPlayerImplInternal( 9149):   com.google.android.exoplayer2.ExoPlaybackException: Source error
.............
Caused by: com.google.android.exoplayer2.upstream.AssetDataSource$AssetDataSourceException: java.io.FileNotFoundException: flutter_assets/assets/videos/heat_beat.mp4

我认为存在一个问题,最后一行表明它在名为 flutter_assets 的文件夹中搜索,然后在我的路径中搜索,但我没有名为 flutter_assets 的文件夹。我尝试创建它并将我的文件移入其中,但出现同样的问题。

class _HomeBodyState extends State<HomeBody> {
late ChewieController _chewieController;
  VideoPlayer videoPlayer = VideoPlayer(path: 'assets/videos/heat_beat.mp4');
  @override
  void initState() {
    videoPlayer.initializePlayers();
    _chewieController = videoPlayer.chewieController;
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    streamListener(
        'Data/${User.uuid}/ECG',
        (DatabaseEvent data) =>
            onValueChangeCallback(data.snapshot.value.toString()));
    return Padding(
      padding: EdgeInsets.symmetric(horizontal: widget.width * 0.02),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.center,
        children: [
          Padding(
            padding: EdgeInsets.only(top: widget.height * 0.1),
            child: Material(
              borderRadius: BorderRadius.circular(5),
              color: AppColors.secondaryContainer,
              child: SizedBox(
                  width: widget.width * 0.96,
                  height: widget.height * 0.4,
                  child: Chewie(controller: _chewieController)),
            ),
          ),
        ],
      ),
    );
  }

  void onValueChangeCallback(String value) {
    if (value != '' && value != '0') {
    } else {}
  }

  @override
  void dispose() {
    videoPlayer.dispose();
    _chewieController.dispose();
    super.dispose();
  }
}

我的视频播放器:

import 'package:video_player/video_player.dart';
import 'package:chewie/chewie.dart';

class VideoPlayer {
  final String path;
  late VideoPlayerController videoPlayerController;
  late ChewieController chewieController;

  VideoPlayer({required this.path});

  void initializePlayers() {
    videoPlayerController = VideoPlayerController.asset(path);
    chewieController = ChewieController(
        videoPlayerController: videoPlayerController,
        allowMuting: true,
        autoPlay: false,
        allowedScreenSleep: false,
        autoInitialize: true,
        looping: true,
        showControls: false,
        zoomAndPan: false);
  }

  void dispose() {
    videoPlayerController.dispose();
    chewieController.dispose();
  }
}
flutter video-player flutter-video-player
1个回答
0
投票

共享您的 pubspec.yaml 文件或在文件中添加文件夹的路径 在你的 pubspec.yaml 文件中这样做

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.