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

Flutter桌面应用中flutter_vlc_player无法播放视频,仅加载

问题

开发Flutter桌面应用时,使用flutter_vlc_player实现视频播放功能,但视频一直处于加载状态无法正常播放,报错信息为:PlatformException(channel-error, Unable to establish connection on channel., null, null)。

代码

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

class HomeScreen extends StatefulWidget {
  const HomeScreen({super.key});

  @override
  State<HomeScreen> createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  late VlcPlayerController _videoPlayerController;

  @override
  void initState() {
    super.initState();
    
    // Initialize the VlcPlayerController
    _videoPlayerController = VlcPlayerController.network(
      'https://media.w3.org/2010/05/sintel/trailer.mp4',
       hwAcc: HwAcc.full,
      autoPlay: false,
      options: VlcPlayerOptions(),
    );
  }

  @override
  void dispose() {
    // Dispose of the controller when the widget is disposed
    _videoPlayerController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.black, // Replace with your desired background color
      body: Center(
        child: VlcPlayer(
          controller: _videoPlayerController,
          aspectRatio: 16 / 9,
          placeholder: Center(child: CircularProgressIndicator()),
        ),
      ),
    );
  }
}

错误日志

A Dart VM Service on Windows is available at: http://127.0.0.1:57747/YU3k4HyQ7K0=/
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(channel-error, Unable to establish connection on channel., null, null)
#0      VlcPlayerApi.initialize (package:flutter_vlc_player_platform_interface/src/messages/messages.dart:632:7)
<asynchronous suspension>

pub依赖配置

dependencies:
  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.6
  file_picker: ^8.0.6
  video_player: ^2.9.1
  flutter_vlc_player: ^7.4.2
  video_player_control_panel: ^1.1.1
  video_player_win: ^2.3.9
  sprintf: ^7.0.0
解决方法
  • 安装系统级VLC依赖:flutter_vlc_player依赖系统的libvlc库,Windows平台需先安装VLC播放器(或单独的libvlc包),安装完成后重启项目。
  • 升级flutter_vlc_player版本:当前7.4.2版本可能存在桌面平台兼容性问题,执行flutter pub upgrade flutter_vlc_player升级至最新稳定版。
  • 移除冲突的视频依赖:项目同时引入video_player和flutter_vlc_player,二者可能存在平台通道冲突,暂时移除video_player、video_player_win、video_player_control_panel后重新测试。
  • 修正控制器初始化逻辑:初始化控制器后需调用initialize()并等待完成,修改initState代码:
@override
void initState() {
  super.initState();
  _initVideoController();
}

Future<void> _initVideoController() async {
  _videoPlayerController = VlcPlayerController.network(
    'https://media.w3.org/2010/05/sintel/trailer.mp4',
    hwAcc: HwAcc.full,
    autoPlay: false,
    options: VlcPlayerOptions(),
  );
  await _videoPlayerController.initialize();
  setState(() {});
}
  • 清理缓存重建项目:执行flutter clean → flutter pub get → 重新运行项目,避免缓存导致的通道连接异常。

内容的提问来源于stack exchange,提问作者Johane Grei Wall

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 21:32:27