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
相关产品推荐
相关产品推荐

