VisioForge

Last updated: 2026年1月

Video Capture SDK .NET vs LibVLCSharp

全面的 .NET 视频采集比较

为您的 .NET 应用程序选择合适的视频采集框架是一个关键的架构决策。本指南提供了 VisioForge Video Capture SDK .NET(一个专用采集引擎)和 LibVLCSharp(VLC 媒体引擎的 .NET 绑定)之间的详细、公正比较。虽然 LibVLCSharp 在媒体播放方面表现出色,可以打开采集设备,但 Video Capture SDK 专门为专业视频采集工作流程而设计。我们检查架构、功能、性能、许可和实际代码,以便您做出明智的决定。

执行摘要

方面Video Capture SDK .NETLibVLCSharp
架构双引擎:原生 DirectShow/Media Foundation + 嵌入式 GStreamer 管道通过 libvlc C 互操作的单体 VLC 媒体引擎
主要用途专业视频采集、录制、流媒体和处理具有基本采集设备访问功能的媒体播放库
采集源网络摄像头、屏幕、IP 摄像机、采集卡、电视调谐器、NDI、工业相机通过 dshow:// 的网络摄像头、通过 screen:// 的屏幕、通过 URL 的 IP 摄像机
实时预览内置 GPU 加速预览,带叠加层和特效内置视频表面渲染(面向播放)
录制格式MP4、MKV、WebM、AVI、WMV、MOV、TS、GIF + 30 多种,带类型化输出类通过 sout 转码链 — 基于字符串的配置
多输出原生 Outputs_Add API 实现同时录制 + 流媒体 + 预览通过 sout duplicate 指令 — 脆弱的字符串语法
视频特效采集期间 40+ 种 CPU 和 GPU 加速特效采集期间无实时特效
检测内置运动、人脸、条形码/QR 码检测无检测功能
许可按开发者的商业许可(订阅或永久)LGPL 2.1 — 动态链接免费
定价从 250 欧元(订阅)到 1,500 欧元(团队终身)免费(LGPL 2.1)

架构深入分析

Video Capture SDK .NET 架构

Video Capture SDK 使用双引擎设计。主引擎在 Windows 上封装 DirectShow 和 Media Foundation,提供对操作系统公开的每个采集设备的原生访问。辅助嵌入式 GStreamer 管道处理跨平台采集、高级编解码器操作和 IP 摄像机接入。两个引擎共享统一的 .NET API 表面,因此切换它们不需要代码更改。

  • 通过 DirectShow 和 Media Foundation 过滤器图的原生 Windows 采集
  • 用于 macOS、Linux、iOS 和 Android 的跨平台 GStreamer 引擎
  • 通过 Direct3D / OpenGL 渲染器的 GPU 加速预览
  • 支持 .NET async/await 的事件驱动架构
  • 单进程模型 — 无需子进程管理
  • 用于录制和流媒体配置的类型化输出类

LibVLCSharp 架构

LibVLCSharp 是 libvlc 的官方 .NET 绑定,libvlc 是 VLC 媒体播放器背后的核心引擎。它提供了围绕 VLC 的 C API 的托管包装器,提供对 VLC 广泛媒体播放功能的访问。虽然主要为播放设计,但它可以使用 VLC 的媒体资源定位器语法(dshow://、screen://、v4l2://)打开采集设备。

  • 通过 P/Invoke 的 libvlc C API 的托管 .NET 包装器
  • 处理所有媒体操作的单体 VLC 引擎
  • 通过 URL 样式的媒体资源定位器访问采集设备
  • 通过 sout(流输出)字符串链配置录制
  • 播放优先设计 — 采集是次要用例
  • 通过平台特定的 VLC 原生库实现跨平台

关键架构差异

方面Video Capture SDKLibVLCSharp
设计重点专为视频采集工作流程构建以采集为次要功能的媒体播放库
设备发现带完整设备元数据的原生 OS 枚举 API手动 dshow:// 或 v4l2:// URL 构建
录制配置类型化 .NET 输出类(MP4Output、H264EncoderSettings)基于字符串的 sout 转码链
错误处理.NET 异常和基于事件的错误VLC 日志回调和事件订阅
多输出原生 Outputs_Add API — 托管且类型安全sout duplicate 指令 — 脆弱的字符串解析
特效管道采集期间的内置 CPU + GPU 特效链采集无实时特效管道

逐项功能比较

采集源

功能Video Capture SDKLibVLCSharp
USB 网络摄像头⚠️(通过 dshow:// 且控制有限)
内置笔记本电脑摄像头⚠️(通过 dshow:// URL)
屏幕/桌面采集⚠️(通过 screen:// 的基础功能 — 无区域选择)
应用程序窗口采集
IP 摄像机(RTSP/ONVIF)⚠️(基于 URL,无自动重连)
采集卡(Blackmagic DeckLink)
电视调谐器(BDA/DVB)
NDI 源
工业相机(GigE Vision、USB3 Vision)
虚拟摄像头(OBS Virtual Cam)⚠️(仅 Windows 上通过 dshow://)

实时预览

功能Video Capture SDKLibVLCSharp
内置视频预览(面向播放的表面)
GPU 加速渲染
预览上的文本/图像叠加(采集期间无叠加 API)
无录制预览
多个预览窗口⚠️(需要多个 MediaPlayer 实例)
WinForms / WPF / MAUI 控件(VideoView 控件可用)

录制

功能Video Capture SDKLibVLCSharp
MP4(H.264 / H.265)⚠️(通过 sout 转码字符串)
MKV 容器⚠️(通过 sout 转码字符串)
WebM(VP8 / VP9)⚠️(通过 sout 转码字符串)
AVI⚠️(通过 sout 转码字符串)
WMV / ASF⚠️(通过 sout 转码字符串)
类型化输出配置(所有配置基于字符串)
纯音频录制⚠️(通过 sout 转码字符串)
分段录制(按时间/大小分割)
预事件录制(循环缓冲区)

多输出

功能Video Capture SDKLibVLCSharp
同时录制 + 流媒体⚠️(通过 sout duplicate — 脆弱)
多个录制输出⚠️(通过 sout duplicate — 脆弱)
原生 Outputs_Add API
独立输出控制
录制期间截图⚠️(TakeSnapshot 可用但功能有限)

流媒体

功能Video Capture SDKLibVLCSharp
RTMP Push⚠️(通过 sout — 控制有限)
RTSP 服务器模式
SRT(Caller / Listener)
HLS 分段生成⚠️(通过 sout — 有限)
UDP / TCP 单播 / 组播⚠️(通过 sout rtp/udp)
类型化流媒体配置(所有配置基于字符串 sout 链)

视频处理

功能Video Capture SDKLibVLCSharp
实时调整大小/裁剪(采集期间无处理)
去隔行(VLC 有内置去隔行)
颜色调整(亮度、对比度)(采集期间无特效)
文字叠加/水印(采集期间无叠加)
图像叠加/标志(采集期间无叠加)
画中画
色度键(绿幕)
GPU 加速滤镜

音频

功能Video Capture SDKLibVLCSharp
音频设备采集⚠️(通过 dshow:// 音频)
系统音频(回环)采集
音频混合(多输入)
实时音量/增益控制⚠️(基本音量控制)
音频特效(40+ 内置)
VU 表/电平监控

检测与分析

功能Video Capture SDKLibVLCSharp
运动检测
人脸检测
条形码/QR 码读取
目标跟踪
音频电平检测

帧访问与集成

功能Video Capture SDKLibVLCSharp
原始帧回调(RGB / YUV)⚠️(通过 SetVideoCallbacks — 设置复杂)
Bitmap / SKBitmap / WriteableBitmap(需要手动转换)
与 ML.NET / ONNX 集成⚠️(需要手动帧提取)
OpenCV 互操作⚠️(通过视频回调)
直接 GPU 纹理访问
虚拟摄像头输出

平台支持

操作系统兼容性

平台Video Capture SDKLibVLCSharp
Windows x64
Windows ARM64
macOS(Apple Silicon + Intel)
Linux x64(Ubuntu、Debian、Fedora)
Linux ARM64(Raspberry Pi)
Android(通过 .NET MAUI)
iOS(通过 .NET MAUI)

UI 框架兼容性

框架Video Capture SDKLibVLCSharp
WinForms(VideoView 控件)
WPF(VideoView 控件)
.NET MAUI(VideoView 控件)
Avalonia UI(VideoView 控件)
控制台/服务
ASP.NET Core(后台服务)⚠️(面向播放的设计)
Blazor(服务器端处理)⚠️(有限的服务器端采集)

价格比较

Video Capture SDK .NET 定价

年度订阅250 - 500 欧元

1 名开发者,商业使用,1 年更新

团队终身750 - 1,500 欧元

最多 8 名开发者,永久许可证,终身更新

All licenses include:

  • 免版税分发
  • 所有源代码示例
  • 优先工单支持
  • 包含所有平台目标

LibVLCSharp 费用

LibVLCSharp免费

LGPL 2.1 许可证 — 需要动态链接

LibVLC 商业许可证联系 VideoLAN

用于专有静态链接或 LGPL 不兼容的使用

LGPL 合规注意事项

LibVLCSharp 和 libvlc 根据 LGPL 2.1 许可。这意味着只要遵守 LGPL 条款,您就可以在商业专有软件中使用它们。主要要求包括:

  • 必须动态链接到 libvlc(不能静态链接)
  • 必须为用户提供将 LGPL 许可库替换为修改版本的能力
  • 必须包含 LGPL 许可证副本并显著提及 libvlc 的使用
  • 如果修改了 libvlc 本身,必须在 LGPL 下发布这些修改
  • 静态链接或某些嵌入式场景可能需要 VideoLAN 的商业许可证

虽然 LGPL 比 GPL 更宽松,但合规仍需要仔细注意链接和分发要求。一些企业法律团队要求商业许可以避免任何开源合规风险。

代码示例

示例 1:网络摄像头录制为 MP4

Video Capture SDK .NET

C#
using VisioForge.Core.VideoCapture;
using VisioForge.Core.Types.Output;

// Create the capture engine
var capture = new VideoCaptureCore();

// Set video source (first available webcam)
var devices = await capture.Video_CaptureDevice_ListAsync();
capture.Video_CaptureDevice = devices[0];

// Set audio source
var audioDevices = await capture.Audio_CaptureDevice_ListAsync();
capture.Audio_CaptureDevice = audioDevices[0];

// Configure MP4 output with H.264
capture.Output_Format = new MP4Output
{
    Video = new H264EncoderSettings
    {
        Bitrate = 4000,
        Profile = H264Profile.Main
    },
    Audio = new AACEncoderSettings
    {
        Bitrate = 192
    }
};
capture.Output_Filename = "recording.mp4";

// Enable preview
capture.Video_Preview_Enabled = true;

// Start recording with preview
await capture.StartAsync();

LibVLCSharp

C#
using LibVLCSharp.Shared;

// Initialize VLC engine
Core.Initialize();
using var libVLC = new LibVLC();
using var mediaPlayer = new MediaPlayer(libVLC);

// Open webcam via dshow:// URL
// Note: device name must be known in advance
using var media = new Media(libVLC,
    "dshow://",
    FromType.FromLocation);

// Add recording via sout transcode chain
media.AddOption(
    ":sout=#transcode{" +
    "vcodec=h264,vb=4000," +
    "acodec=aac,ab=192" +
    "}:duplicate{" +
    "dst=std{access=file," +
    "mux=mp4," +
    "dst=recording.mp4}," +
    "dst=display" +
    "}");

// Set dshow device (string-based)
media.AddOption(
    ":dshow-vdev=Integrated Camera");
media.AddOption(
    ":dshow-adev=Microphone (Realtek Audio)");

// Start — no typed API, errors in VLC log
mediaPlayer.Play(media);

// To stop: mediaPlayer.Stop();
// No progress events, no state machine

示例 2:带叠加 + 流媒体的屏幕录制

Video Capture SDK .NET

C#
using VisioForge.Core.VideoCapture;
using VisioForge.Core.Types;
using VisioForge.Core.Types.Output;

var capture = new VideoCaptureCore();

// Screen capture source
capture.Video_CaptureDevice = new ScreenCaptureSourceSettings
{
    FullScreen = true,
    FrameRate = 30,
    CaptureCursor = true
};

// Add timestamp overlay
capture.Video_Overlays.Add(new VideoOverlayText
{
    Text = "{timestamp}",
    Position = new System.Drawing.Point(10, 10),
    Font = new System.Drawing.Font("Arial", 14),
    Color = System.Drawing.Color.White
});

// Add watermark image
capture.Video_Overlays.Add(new VideoOverlayImage
{
    Filename = "logo.png",
    Position = new System.Drawing.Point(10, 50),
    Opacity = 0.7
});

// Record to file
capture.Output_Format = new MP4Output
{
    Video = new H264EncoderSettings { Bitrate = 8000 }
};
capture.Output_Filename = "screen.mp4";

// Also stream via RTMP
capture.Outputs_Add(new RTMPOutput
{
    URL = "rtmp://streaming-server/live/key"
});

await capture.StartAsync();

LibVLCSharp

C#
using LibVLCSharp.Shared;

Core.Initialize();
using var libVLC = new LibVLC();
using var mediaPlayer = new MediaPlayer(libVLC);

// Screen capture via screen:// URL
using var media = new Media(libVLC,
    "screen://",
    FromType.FromLocation);

// Configure screen capture
media.AddOption(":screen-fps=30");
media.AddOption(":screen-follow-mouse");

// Record to file via sout
// Note: No overlay support during capture
// Note: No text/image overlay API
media.AddOption(
    ":sout=#transcode{" +
    "vcodec=h264,vb=8000" +
    "}:std{" +
    "access=file," +
    "mux=mp4," +
    "dst=screen.mp4" +
    "}");

// Cannot simultaneously stream via RTMP
// sout duplicate is fragile and often fails
// for screen capture + streaming combos

// No overlay API — cannot add timestamps
// No watermark support during capture
// No region selection for capture area

mediaPlayer.Play(media);

示例 3:多输出:录制 + 流媒体 + 预览

Video Capture SDK .NET

C#
using VisioForge.Core.VideoCapture;
using VisioForge.Core.Types.Output;

var capture = new VideoCaptureCore();

// Set webcam source
var devices = await capture.Video_CaptureDevice_ListAsync();
capture.Video_CaptureDevice = devices[0];

// Primary output: MP4 recording
capture.Output_Format = new MP4Output
{
    Video = new H264EncoderSettings { Bitrate = 4000 },
    Audio = new AACEncoderSettings { Bitrate = 192 }
};
capture.Output_Filename = "recording.mp4";

// Second output: RTMP stream
capture.Outputs_Add(new RTMPOutput
{
    URL = "rtmp://live.server/app/stream_key",
    Video = new H264EncoderSettings { Bitrate = 2500 },
    Audio = new AACEncoderSettings { Bitrate = 128 }
});

// Third output: Low-res backup
capture.Outputs_Add(new MP4Output
{
    Video = new H264EncoderSettings
    {
        Bitrate = 1000,
        Width = 640,
        Height = 360
    }
}, "backup.mp4");

// Preview is always available
capture.Video_Preview_Enabled = true;

// All outputs start simultaneously
await capture.StartAsync();

LibVLCSharp

C#
using LibVLCSharp.Shared;

Core.Initialize();
using var libVLC = new LibVLC();
using var mediaPlayer = new MediaPlayer(libVLC);

// Open webcam
using var media = new Media(libVLC,
    "dshow://",
    FromType.FromLocation);

media.AddOption(
    ":dshow-vdev=Integrated Camera");

// Attempt multi-output via sout duplicate
// WARNING: This is fragile and often fails
media.AddOption(
    ":sout=#transcode{" +
    "vcodec=h264,vb=4000," +
    "acodec=aac,ab=192" +
    "}:duplicate{" +
    "dst=std{access=file," +
    "mux=mp4," +
    "dst=recording.mp4}," +
    "dst=std{access=rtmp," +
    "mux=flv," +
    "dst=rtmp://live.server/app/key}," +
    "dst=display" +
    "}");

// No independent bitrate per output
// No low-res backup option
// Single transcode shared across all outputs
// If one output fails, all may fail
// No typed API — string errors at runtime

mediaPlayer.Play(media);

示例 4:带检测的 RTSP IP 摄像机监控

Video Capture SDK .NET

C#
using VisioForge.Core.VideoCapture;
using VisioForge.Core.Types;
using VisioForge.Core.Types.Output;

var cameras = new List<VideoCaptureCore>();
var cameraUrls = new[]
{
    "rtsp://192.168.1.101/stream",
    "rtsp://192.168.1.102/stream",
    "rtsp://192.168.1.103/stream",
    "rtsp://192.168.1.104/stream"
};

foreach (var url in cameraUrls)
{
    var cam = new VideoCaptureCore();
    cam.IP_Camera_Source = new IPCameraSourceSettings
    {
        URL = url,
        Type = IPCameraType.RTSP,
        ReconnectOnFailure = true,
        ReconnectDelay = TimeSpan.FromSeconds(5)
    };

    // Motion detection
    cam.Motion_Detection.Enabled = true;
    cam.Motion_Detection.Sensitivity = 70;
    cam.OnMotionDetected += (s, e) =>
    {
        Console.WriteLine($"Motion on {url}");
    };

    // Barcode detection
    cam.Barcode_Reader.Enabled = true;
    cam.OnBarcodeDetected += (s, e) =>
    {
        Console.WriteLine($"Barcode: {e.Value}");
    };

    // Segmented recording
    cam.Output_Format = new MP4Output();
    cam.Output_Filename = $"cam_{cameras.Count}.mp4";
    cam.SegmentedRecording.Enabled = true;
    cam.SegmentedRecording.Duration = TimeSpan.FromHours(1);

    cameras.Add(cam);
}

foreach (var cam in cameras)
    await cam.StartAsync();

LibVLCSharp

C#
using LibVLCSharp.Shared;

Core.Initialize();
using var libVLC = new LibVLC();

var cameraUrls = new[]
{
    "rtsp://192.168.1.101/stream",
    "rtsp://192.168.1.102/stream",
    "rtsp://192.168.1.103/stream",
    "rtsp://192.168.1.104/stream"
};

var players = new List<MediaPlayer>();

foreach (var url in cameraUrls)
{
    var player = new MediaPlayer(libVLC);
    var media = new Media(libVLC, url,
        FromType.FromLocation);

    // Record via sout
    media.AddOption(
        ":sout=#transcode{vcodec=h264,vb=2000}" +
        ":std{access=file,mux=mp4," +
        $"dst=cam_{players.Count}.mp4}}");

    // No motion detection — not available
    // No barcode detection — not available
    // No face detection — not available
    // No auto-reconnection on stream failure
    // No segmented recording support
    // Must implement reconnection manually:
    player.EndReached += (s, e) =>
    {
        // Manual reconnect attempt
        // ThreadPool.QueueUserWorkItem(_ =>
        //     player.Play(media));
    };

    player.Play(media);
    players.Add(player);
}

// No event-driven detection
// No managed surveillance features
// Manual process monitoring required

何时选择每个解决方案

在需要以下功能时选择 Video Capture SDK

  • 带实时视频特效和叠加的专业采集
  • 从单个管道进行多输出录制 + 流媒体
  • 带运动、人脸和条形码检测的监控系统
  • 采集期间的实时音频特效(40+)
  • 广播应用的虚拟摄像头输出
  • 工业和专业硬件支持(DeckLink、GigE Vision)
  • 采集期间的画中画和色度键合成
  • 带区域选择和叠加的屏幕录制
  • 无字符串配置的完全类型化 .NET API

在需要以下功能时选择 LibVLCSharp

  • 带基本采集设备访问的媒体播放
  • LGPL 合规可接受的零预算项目
  • 无特效或检测的简单网络摄像头录制
  • .NET MAUI 应用中的跨平台媒体播放
  • 已使用 VLC 基础设施和工作流程的项目
  • 与 LGPL 许可兼容的开源项目
  • 基本视频采集功能的快速原型
  • 播放为主、采集为辅的应用

部署与分发

Video Capture SDK 部署

  • NuGet 包包含所有原生依赖项
  • 单个 NuGet 引用 — 无需安装外部工具
  • 商业许可证下免版税重新分发
  • 支持 xcopy / MSIX / ClickOnce 部署
  • 支持 Docker 容器(Linux 和 Windows)
  • 无 LGPL 义务 — 对专有软件安全

LibVLCSharp 部署

  • NuGet 包可用(LibVLCSharp + VideoLAN.LibVLC 平台包)
  • 必须捆绑平台特定的 VLC 原生库(约 80-150 MB)
  • LGPL 合规需要动态链接和许可证通知
  • 必须为用户提供替换 libvlc 库的机制
  • 平台包处理原生库分发
  • 静态链接需要 VideoLAN 商业许可证

决策矩阵

需求Video Capture SDKLibVLCSharp胜出者
专业采集应用Video Capture SDK
多输出(录制 + 流媒体)Video Capture SDK
带检测的监控Video Capture SDK
采集期间的实时特效Video Capture SDK
虚拟摄像头输出Video Capture SDK
工业/专业硬件Video Capture SDK
画中画/色度键合成Video Capture SDK
采集期间 40+ 音频特效Video Capture SDK
带叠加的屏幕录制Video Capture SDK
预算为 $0(开源)LibVLCSharp
简单网络摄像头录制LibVLCSharp
LGPL 兼容项目LibVLCSharp

结论

Video Capture SDK .NET

Video Capture SDK 是一个专用采集引擎,在专业视频采集工作流程中表现出色。其类型化 .NET API、内置特效管道、多输出架构、检测功能和专业硬件支持使其成为采集质量和功能至关重要的应用程序的明确选择。商业许可证确保企业分发的知识产权清洁。

LibVLCSharp

LibVLCSharp 是一个出色的媒体播放库,也可以打开采集设备。如果您的应用主要关注播放并偶尔进行简单录制,LibVLCSharp 是一个有能力且免费的选择。然而,其基于字符串的 sout 配置、缺乏实时特效和没有检测功能意味着专业采集应用需要显著更多的自定义开发 — 或者仅凭 LibVLCSharp 根本无法构建。

The Reality

对于大多数构建以采集为中心的应用的 .NET 开发者来说,Video Capture SDK 提供了 LibVLCSharp 从未被设计来提供的专业级功能。LibVLCSharp 作为播放库表现出色,当预算是主要限制时,它是基本采集的合理选择。如果您的应用需要特效、检测、多输出或专业硬件支持,Video Capture SDK 是实用的选择。

Frequently Asked Questions

最好的 .NET 视频采集 SDK 是什么?
对于 .NET 中的专业视频采集,VisioForge Video Capture SDK .NET 提供了最全面的功能集,包括实时特效、多输出录制、运动/人脸/条形码检测以及对 Blackmagic DeckLink 和工业相机等专业硬件的支持。LibVLCSharp 是基本采集需求的不错免费替代品,但缺乏专业应用所需的专门采集功能。
如何在 C# 中采集网络摄像头视频?
使用 Video Capture SDK,您创建一个 VideoCaptureCore 实例,通过 Video_CaptureDevice_ListAsync() 枚举设备,设置设备,使用 MP4Output 等类型化类配置输出格式,然后调用 StartAsync()。使用 LibVLCSharp,您打开一个 dshow:// URL 并通过 sout 转码字符串选项配置录制。SDK 方法提供类型安全、IntelliSense 和编译时错误检查,而 LibVLCSharp 使用运行时字符串解析。
LibVLCSharp 能在 C# 中带特效采集网络摄像头吗?
不能。LibVLCSharp 不支持采集期间的实时视频或音频特效。它主要是一个媒体播放库。要在采集期间添加叠加、颜色调整、色度键或画中画等特效,您需要像 VisioForge Video Capture SDK 这样的专用采集 SDK,它包含 40 多种带 GPU 加速的视频和音频特效。
如何在 C# .NET 中录制屏幕?
Video Capture SDK 提供了 ScreenCaptureSourceSettings 类,具有全屏、区域选择、光标采集和帧率控制选项。您可以添加叠加、特效并同时进行流媒体。LibVLCSharp 可以通过 screen:// URL 采集屏幕,但不提供区域选择、叠加或采集期间的特效。对于带注释和流媒体的专业屏幕录制,推荐使用 Video Capture SDK。
Video Capture SDK 支持 RTSP IP 摄像机吗?
是的。Video Capture SDK 提供托管的 RTSP/ONVIF IP 摄像机支持,具有流失败时的自动重连、可配置的重试延迟和身份验证。它可以同时录制、流媒体和对 IP 摄像机馈送应用特效。LibVLCSharp 可以打开 RTSP URL 进行播放和基本录制,但缺乏自动重连、检测功能和多输出能力。
Video Capture SDK 和 LibVLCSharp 有什么区别?
Video Capture SDK 是一个专用的 .NET 视频采集引擎,具有类型化 API、实时特效、多输出录制、检测(运动、人脸、条形码)和专业硬件支持。LibVLCSharp 是 VLC 媒体引擎的 .NET 绑定,主要为播放设计,通过基于字符串的 sout 配置提供基本采集功能。SDK 为商业版(从每年 250 欧元起),而 LibVLCSharp 在 LGPL 2.1 下免费。

开始使用

Related Comparisons