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

Flutter使用better_player播放视频触发ExoPlaybackException问题排查

问题分析与修复方案

核心问题

  1. 本地视频路径错误:使用BetterPlayer.file()加载./assets/images/sample_video.mp4,但该方法仅适用于访问设备本地文件系统(如手机存储)的文件,无法识别Flutter项目的assets资源目录,导致播放器找不到视频源。
  2. 网络视频配置缺失:仅开启usesCleartextTraffic不足以保证网络视频正常播放,BetterPlayer需要明确的配置来适配网络播放场景。

修复步骤

1. 修复本地视频播放

  • 先确保pubspec.yaml中正确声明assets资源:
flutter:
  assets:
    - assets/images/sample_video.mp4
  • 将BetterPlayer.file()替换为BetterPlayer.asset(),传入正确的assets路径:
BetterPlayer.asset("assets/images/sample_video.mp4")

2. 修复网络视频播放

  • 为网络视频添加BetterPlayerConfiguration配置,确保播放器初始化正确的网络参数:
BetterPlayer.network(
  "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4",
  betterPlayerConfiguration: BetterPlayerConfiguration(
    autoPlay: true,
    aspectRatio: 16/9,
  ),
)

3. 完整修正代码

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

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

  @override
  State<VideoPlayerScreen> createState() => _VideoPlayerScreenState();
}

class _VideoPlayerScreenState extends State<VideoPlayerScreen> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: [
          // 本地视频播放
          AspectRatio(
            aspectRatio: 16 / 9,
            child: BetterPlayer.asset("assets/images/sample_video.mp4"),
          ),
          const SizedBox(height: 20),
          // 网络视频播放
          AspectRatio(
            aspectRatio: 16 / 9,
            child: BetterPlayer.network(
              "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4",
              betterPlayerConfiguration: const BetterPlayerConfiguration(
                autoPlay: true,
                aspectRatio: 16/9,
              ),
            ),
          ),
        ],
      ),
    );
  }
}

额外检查项

  • 执行flutter pub get确保better_player依赖完全安装
  • 清理项目缓存后重新运行:flutter clean && flutter run
  • 确认Android设备网络权限正常(默认已允许网络访问,无需额外配置)

内容的提问来源于stack exchange,提问作者Ayan Dasgupta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:18:37