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

如何在C#中获取运行中VLC Media Player的媒体数据及元数据

从运行中VLC获取媒体数据的稳定实现方案

首先明确:读进程内存的方案完全不具备可维护性,VLC每个版本的内存布局、变量偏移都会变化,根本不可能兼容主流版本,优先用VLC官方提供的内置接口实现。

方案1:调用VLC内置HTTP接口(适用于读取外部独立运行的VLC实例)

VLC默认自带Web远程控制接口,无需额外安装插件,开启后可以直接通过HTTP请求拿到所有你需要的媒体数据、元数据,C#侧用原生HttpClient即可调用,不需要引入第三方类库。

开启VLC HTTP接口的方法:

  • 手动开启:打开VLC -> 工具 -> 偏好设置 -> 左下角「显示设置」选择「全部」 -> 左侧菜单找到Interface > 主界面 -> 勾选Web选项 -> 展开主界面 > Lua子菜单 -> 在「Lua HTTP」板块设置密码、端口(默认8080),保存后重启VLC即可生效。
  • 程序自动开启:如果你是从C#程序中启动VLC实例,可以直接带启动参数自动开启接口,无需用户手动配置:
    vlc.exe --extraintf=http --http-host=127.0.0.1 --http-port=8080 --http-password=你自定义的密码

C#调用示例

接口地址为http://127.0.0.1:你设置的端口/requests/status.json,请求需要Basic认证,用户名为空,密码为你设置的Lua HTTP密码。
示例代码:

using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;

// 初始化HttpClient(建议全局单例)
var client = new HttpClient();
var authToken = Convert.ToBase64String(Encoding.ASCII.GetBytes($":{你设置的VLC HTTP密码}"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authToken);

// 请求状态数据
var response = await client.GetAsync("http://127.0.0.1:8080/requests/status.json");
response.EnsureSuccessStatusCode();
var jsonContent = await response.Content.ReadAsStringAsync();
var vlcStatus = JsonSerializer.Deserialize<VlcStatus>(jsonContent);

// 你需要的字段都在vlcStatus里:
// 总时长:vlcStatus.length 单位秒
// 当前播放时间:vlcStatus.time 单位秒
// 帧率:vlcStatus.fps
// 元数据:vlcStatus.information?.category?.meta 里面包含标题、艺术家、专辑、格式等所有元数据

你可以根据返回的JSON结构自行定义VlcStatus类的字段,只需要保留你需要的属性即可。

方案2:嵌入VLC到你的C#程序(适用于不需要读取外部VLC实例的场景)

如果你的需求是在自己的应用里集成播放能力同时获取数据,可以用官方维护的LibVLCSharp绑定,直接在C#代码中控制播放、获取所有媒体相关数据,稳定性更高。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:15:03