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

.NET Core 3.1 WinForm嵌入VLC播放器调用Core.Initialize()抛出异常如何解决

解决方案

根因说明

你遇到的报错核心原因是缺失VLC的原生运行库,LibVLCSharp本身只是.NET封装层,不包含libvlc.dll、libvlccore.dll等原生二进制文件,需要单独安装对应平台的原生包。

具体操作步骤

  • 第一步:安装原生LibVLC包
    打开NuGet包管理器,搜索安装VideoLAN.LibVLC.Windows,版本选择和你当前使用的LibVLCSharp 3.6.1兼容的3.x稳定版即可。该包会自动将对应架构的VLC原生库及依赖插件复制到输出目录。
  • 第二步:修正项目生成配置
    不要使用「Any CPU」作为生成目标,明确指定生成平台为x64或x86,和你运行环境的架构匹配,避免架构不匹配导致的dll加载失败。
  • 第三步:修正代码生命周期逻辑
    你当前在局部方法的using块中声明LibVLC和MediaPlayer实例,PlayerForm_Load方法执行完毕后实例就会被释放,播放会直接中断。需要将两个对象提升为类级别成员变量,在窗体关闭时再释放。

修正后代码示例

// 类级别声明成员变量
private LibVLC _libVLC;
private MediaPlayer _mediaPlayer;

private void PlayerForm_Load(object sender, EventArgs e)
{
    Core.Initialize();
    _libVLC = new LibVLC();
    _mediaPlayer = new MediaPlayer(_libVLC);
    
    var uri = new Uri("C:\\Active Projects\\ScreenPlayerWeb\\ScreenPlayerWeb\\wwwroot\\Videos\\VID_20190621_112556.3gp");
    using var media = new Media(_libVLC, uri);
    _mediaPlayer.Fullscreen = true;
    _mediaPlayer.Play(media);
}

// 窗体关闭时释放资源
private void PlayerForm_FormClosing(object sender, FormClosingEventArgs e)
{
    _mediaPlayer?.Stop();
    _mediaPlayer?.Dispose();
    _libVLC?.Dispose();
}

可选排查方案

如果安装原生包后输出目录仍没有libvlc相关文件,可以检查NuGet包还原是否正常,重新生成项目即可触发原生库的复制逻辑。

内容的提问来源于stack exchange,提问作者Malik Mehmood

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:06:03