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

LibVLCSharp如何获取可用摄像头列表及默认分辨率

LibVLCSharp获取摄像头列表及默认分辨率解决方案

修复MediaList为空的问题

你创建MediaDiscoverer实例后没有启动设备发现流程,所以MediaList始终为空,需要主动调用Start()方法并等待发现完成后再读取设备列表。

完整获取摄像头列表实现代码

using LibVLCSharp.Shared;
using System.Linq;

// 初始化LibVLC(注意要先调用Core.Initialize()加载原生库)
Core.Initialize();
using var libVlc = new LibVLC();

// 获取设备类的媒体发现器
var deviceDiscoverers = libVlc.MediaDiscoverers(MediaDiscovererCategory.Devices);
var videoCaptureDiscoverer = deviceDiscoverers.FirstOrDefault(d => d.LongName == "Video capture");

if (videoCaptureDiscoverer != null)
{
    using var mediaDiscoverer = new MediaDiscoverer(libVlc, videoCaptureDiscoverer.Name);
    // 启动设备发现
    mediaDiscoverer.Start();
    // 等待发现完成,也可以监听MediaDiscoverer的MediaListAdded事件做异步处理
    await Task.Delay(300);
    
    // 遍历所有摄像头设备
    foreach (var cameraMedia in mediaDiscoverer.MediaList)
    {
        // 摄像头设备地址,例如v4l2:///dev/video0
        var cameraUrl = cameraMedia.Mrl;
        var cameraName = cameraMedia.Name;
        Console.WriteLine($"找到摄像头:{cameraName},地址:{cameraUrl}");
    }
}

查询摄像头默认/支持的分辨率

拿到摄像头的Media实例后,通过解析媒体轨道信息即可获取分辨率参数:

// 以上面获取的cameraMedia为例
// 解析媒体信息,设置超时时间1秒
var parseResult = await cameraMedia.ParseAsync(MediaParseOptions.ParseLocal, 1000);
if (parseResult == MediaParsedStatus.Success)
{
    // 取视频轨道信息
    var videoTracks = cameraMedia.Tracks.OfType<VideoTrack>().ToList();
    if (videoTracks.Any())
    {
        // 默认分辨率一般为第一个轨道的参数
        var defaultWidth = videoTracks.First().Width;
        var defaultHeight = videoTracks.First().Height;
        Console.WriteLine($"默认分辨率:{defaultWidth}*{defaultHeight}");
        
        // 遍历所有支持的分辨率
        foreach (var track in videoTracks)
        {
            Console.WriteLine($"支持分辨率:{track.Width}*{track.Height}");
        }
    }
}

注意事项

  • Linux平台设备前缀为v4l2://,Windows平台为dshow://,macOS平台为avfoundation://,代码无需修改可自动适配
  • 如果等待300ms仍拿不到设备,可以适当延长等待时间,或者监听MediaDiscoverer.MediaListAdded事件做异步响应,避免阻塞主线程

内容的提问来源于stack exchange,提问作者Node.JS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:36:02