You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter开发简易视频播放器遇PlatformException(VideoError)求助

Flutter视频播放器运行异常排查求助

我正在使用Flutter开发一款简易视频播放器应用,但运行时出现异常。调试代码时显示错误,以下是我的代码及调试信息,恳请协助排查问题:

代码实现

import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';

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

class MyApp extends StatefulWidget {
  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Home(),
    );
  }
}

class Home extends StatefulWidget {
  const Home({Key? key}) : super(key: key);

  @override
  State<StatefulWidget> createState() => _HomeState();
}

class _HomeState extends State<Home> {
  late VideoPlayerController _controller;
  @override
  void initState() {
    _controller = VideoPlayerController.asset("assets/041 Wrap Up_.mp4")
      ..initialize().then((_) {
        setState(() {});
      });
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Video player app"),
      ),
      body: content(),
    );
  }

  Widget content() {
    return Container(
      width: 350,
      height: 350,
      child: _controller.value.isInitialized
          ? VideoPlayer(_controller)
          : Container(),
    );
  }
}

调试错误信息

E/flutter (22092): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(VideoError, Video player had error com.google.android.exoplayer2.ExoPlaybackException: Source error, null, null)
E/flutter (22092)

错误截图

可能的问题及解决方法

  • 资源路径配置问题:

    1. 确认assets/041 Wrap Up_.mp4文件确实存在于项目assets目录下,注意文件名的大小写、空格和下划线必须完全匹配,Flutter对资源路径大小写敏感(iOS平台尤为严格)。
    2. 检查pubspec.yaml是否正确配置资源:
      在flutter节点下添加:
      assets:
        - assets/041 Wrap Up_.mp4
      
      配置完成后执行flutter pub get刷新资源。
  • 视频格式兼容性问题:
    Android端底层使用的ExoPlayer不支持部分编码格式的视频,建议替换为标准H.264编码的MP4文件测试。

  • 添加初始化错误捕获:
    当前代码未处理初始化异常,添加捕获逻辑可帮助定位具体问题:

    @override
    void initState() {
      super.initState();
      _controller = VideoPlayerController.asset("assets/041 Wrap Up_.mp4")
        ..initialize().then((_) {
          setState(() {});
        }).catchError((error) {
          print("视频初始化失败: $error");
        });
    }
    
  • 视频文件损坏:
    尝试重新获取视频文件,确认文件本身未损坏。

内容的提问来源于stack exchange,提问作者M.Shahzad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 02:47:44