VisioForge

Last updated: 2026年9月

Video Capture SDK .NET vs Medialooks MFormats SDK

管道引擎 vs 基于帧的采集对比

在 VisioForge Video Capture SDK .NET 和 Medialooks MFormats SDK 之间选择,是在两种根本不同的架构模型之间做出决定。Video Capture SDK 使用基于管道的引擎,您可以声明式地配置源、处理和输出,而 MFormats 遵循基于帧的抓取-处理-输出循环,您需要手动拉取每一帧并进行路由。本指南比较了架构、功能、平台支持、定价和实际代码,帮助您为项目做出正确的选择。

每年 €250 起 · Lifetime 许可证 €750 起

执行摘要

方面Video Capture SDK .NETMFormats SDK
架构双引擎:原生 DirectShow/Media Foundation + 内嵌 FFmpeg 管道基于帧的抓取-处理-输出循环,使用 COM 对象
平台支持Windows、macOS、Linux、Android、iOS(5个平台)仅 Windows
定价250-500 欧元·年(订阅)或 1,500 欧元Lifetime·Team许可证单独报价(订阅强制)
最适合跨平台采集应用、多输出管道、视频特效、检测多厂商 SDI 广播、HTML5 CG 叠加、播放列表/播出工作流
SDI 硬件Blackmagic DeckLink 支持Blackmagic、AJA、Bluefish444、Deltacast 多厂商 SDI
UI 框架WinForms、WPF、MAUI、Avalonia、Uno、Console、BlazorWinForms、WPF、Console
许可模式永久许可或年度订阅;过期后仍可使用仅年度订阅;订阅过期后添加水印
支持电子邮件支持和工单系统电子邮件支持,论坛

架构深度分析

Video Capture SDK .NET 架构

Video Capture SDK 采用基于管道的设计。您声明式地配置源、处理阶段和输出。引擎自动组装内部过滤器图,处理线程、同步和缓冲区管理。双引擎封装了用于原生设备访问的 DirectShow/Media Foundation 和用于高级编解码器及 IP 摄像头接入的内嵌 FFmpeg 管道。

  • ▶声明式管道配置:设置属性,调用 StartAsync()
  • ▶双引擎:原生 OS 采集 API + 内嵌 FFmpeg
  • ▶通过 Direct3D / OpenGL 渲染器实现 GPU 加速预览
  • ▶支持 .NET async/await 的事件驱动架构
  • ▶具有自动线程管理的单进程模型
  • ▶一个管道多输出:同时录制 + 流式传输 + 截图

MFormats SDK 架构

MFormats 使用基于 COM 对象构建的基于帧的抓取-处理-输出模型。您创建 MFReader 来抓取帧,通过 MFTransform 对象处理每一帧,并将它们发送到 MFWriter 或 MFRenderer 输出。这提供了逐帧的精细控制,但需要您编写采集循环、管理线程和手动处理帧时序。

  • ▶基于帧的循环:从 MFReader 抓取帧,处理,发送到 MFWriter
  • ▶基于 COM 的架构,带有 .NET 互操作包装器
  • ▶需要手动线程和帧时序管理
  • ▶逐帧控制允许自定义路由逻辑
  • ▶每个管道阶段使用单独的对象(Reader、Transform、Writer、Renderer)
  • ▶为广播工作流提供内置的播出和播放列表调度

关键架构差异

方面Video Capture SDKMFormats SDK
编程模型声明式管道:配置并启动命令式循环:逐帧抓取、处理、输出
线程自动内部线程管理开发者管理采集循环线程
帧路由通过管道配置自动完成在代码中逐帧手动路由
多输出一个管道内置同时输出开发者克隆帧并路由到多个写入器
平台跨平台(.NET 6-10、MAUI)仅 Windows(基于 COM)
对象模型纯 .NET 托管 API带有 .NET 包装器的 COM 互操作

逐项功能对比

采集源

功能Video Capture SDKMFormats SDK
USB 摄像头✅✅
屏幕/桌面采集✅✅
IP 摄像头(RTSP/ONVIF)✅✅
Blackmagic DeckLink SDI✅✅
AJA SDI 卡❌✅
Bluefish444 SDI 卡❌✅
Deltacast SDI 卡❌✅
电视调谐器(BDA/DVB)✅❌
NDI 源✅✅
工业相机(GenICam/GigE Vision)✅❌
虚拟摄像头(OBS Virtual Cam)✅⚠️(通过 DirectShow)

录制与输出

功能Video Capture SDKMFormats SDK
MP4(H.264 / H.265)✅✅
MXF 容器⚠️✅(MFormats 在广播 MXF 方面表现突出)
MKV 容器✅❌
WebM(VP8 / VP9 / AV1)✅❌
AVI✅✅
MOV(ProRes)✅✅
WMV / ASF✅✅
MPEG-TS✅✅
动画 GIF✅❌
纯音频(MP3、AAC、WAV、FLAC)✅⚠️
预事件录制(循环缓冲区)✅❌

多输出

功能Video Capture SDKMFormats SDK
同时录制 + 流式传输✅✅
多个独立录制输出✅⚠️(需要手动帧克隆)
独立输出控制(分别启动/停止/暂停)✅⚠️(每个写入器手动控制)
每个输出不同的编解码器✅✅
录制时截图✅✅

流式传输

功能Video Capture SDKMFormats SDK
RTMP Push✅✅
RTSP 服务器✅❌
SRT 流式传输✅✅
HLS 输出✅⚠️
NDI 输出✅✅
UDP / TCP 组播✅✅

视频处理与特效

功能Video Capture SDKMFormats SDK
实时调整大小/裁剪✅✅
去隔行✅✅
颜色调整✅✅
文字/图像叠加✅✅
HTML5 CG 叠加❌✅
色度键(绿幕)✅✅
GPU 加速视频特效(40+)✅⚠️(内置特效有限)
画中画✅✅
转场和擦除✅✅

音频

功能Video Capture SDKMFormats SDK
音频设备采集✅✅
音频混合(多输入)✅✅
音频特效(40+ 内置:均衡器、压缩器、混响等)✅❌
VU 表/电平监控✅✅
系统音频环回采集✅⚠️
嵌入式音频路由(SDI)✅✅

检测与分析

功能Video Capture SDKMFormats SDK
运动检测✅❌
人脸检测✅❌
条形码/二维码读取✅❌
目标跟踪✅❌
音频电平检测✅✅

广播与播出

功能Video Capture SDKMFormats SDK
播放列表/播出调度❌✅
多厂商 SDI 输出⚠️✅(MFormats 支持 AJA、Bluefish、Deltacast 输出)
HTML5 CG(字幕发生器)叠加❌✅
虚拟摄像头输出✅❌
同步锁定/参考同步❌✅

平台支持

操作系统兼容性

平台Video Capture SDKMFormats SDK
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 SDKMFormats SDK
WinForms✅✅
WPF✅✅
.NET MAUI✅❌
Avalonia UI✅❌
Uno Platform✅❌
Console / Service✅✅
Blazor(Server-Side)✅❌

价格对比

Video Capture SDK .NET 定价

开发者(年度)250-500 欧元·年

1名开发者,商业使用,年度更新和支持

Lifetime·Team许可1,500 欧元

购买组织在同一城市一个地点的所有开发者、永久使用权和产品生命周期内的更新

Lifetime·Team许可1,500 欧元

购买组织在同一城市一个地点的所有开发者、永久使用权和产品生命周期内的更新

All licenses include:

  • ✓ 免版税分发
  • ✓ 所有源代码示例
  • ✓ 电子邮件支持
  • ✓ 包含所有平台目标
  • ✓ 永久许可选项:订阅到期后可继续使用(无水印)

MFormats SDK 定价

MFormats SDK(1名开发者)价格需咨询

年度订阅,单个开发者,仅 Windows

5名开发者 / 3年价格需咨询

5个开发者席位,3年订阅承诺

运行时许可额外费用

根据配置可能需要按部署收取运行时费用

订阅过期警告

MFormats SDK 使用强制性年度订阅模式。如果您的订阅过期或未续订:

  • ⚠水印会自动添加到所有视频输出
  • ⚠没有活跃订阅无法继续在生产环境中使用 SDK
  • ⚠没有永久许可证备选方案
  • ⚠如果许可证服务器无法验证,您部署的应用程序将显示水印

Video Capture SDK 提供购买后无限期继续工作的永久许可证,续订过期不会有水印惩罚。

每年 €250 起 · Lifetime 许可证 €750 起

代码示例

示例 1:摄像头采集到 MP4

Video Capture SDK .NET

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

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

// Set video source (first available webcam)
var devices = capture.Video_CaptureDevices();
capture.Video_CaptureDevice = new VideoCaptureSource(devices[0].Name);

// Set audio source
var audioDevices = capture.Audio_CaptureDevices();
capture.Audio_CaptureDevice = new AudioCaptureSource(audioDevices[0].Name);

// Configure MP4 output
capture.Output_Format = new MP4Output();
capture.Output_Filename = "recording.mp4";

// Set mode to capture with preview
capture.Mode = VideoCaptureMode.VideoCapture;

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

MFormats SDK

C#
// MFormats: Frame-based capture loop
MFDeviceClass devClass = new MFDeviceClass();
MFReaderClass reader = new MFReaderClass();
MFWriterClass writer = new MFWriterClass();
MFRendererClass renderer = new MFRendererClass();

// Configure video device
reader.DeviceSet(eMFDeviceType.eMFDT_Video, 0, "");
reader.DeviceSet(eMFDeviceType.eMFDT_Audio, 0, "");

// Configure writer output
writer.WriterSet("recording.mp4", 0, "");

// You must run the capture loop yourself
while (capturing)
{
    MFFrame frame;
    reader.SourceFrameGet(-1, out frame, "");

    if (frame != null)
    {
        // Preview
        renderer.RenderSet("preview", frame, "");

        // Write to file
        writer.WriterPut(frame, "");

        // Release frame manually
        Marshal.ReleaseComObject(frame);
    }

    Thread.Sleep(1); // Manual timing
}

示例 2:IP 摄像头 + 叠加 + 流式传输

Video Capture SDK .NET

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

var capture = new VideoCaptureCore();

// IP camera source
capture.IP_Camera_Source = new IPCameraSourceSettings
{
    URL = new Uri("rtsp://192.168.1.100:554/stream"),
    Type = IPSourceEngine.Auto_FFMPEG
};
capture.Mode = VideoCaptureMode.IPCapture;

// Add text overlay
capture.Video_Effects_Enabled = true;
capture.Video_Effects_Clear();
var textOverlay = new VideoEffectTextLogo(true)
{
    Text = "{timestamp} - Camera 1",
    Left = 10,
    Top = 10,
    Font = new System.Drawing.Font("Arial", 14),
    FontColor = System.Drawing.Color.White
};
capture.Video_Effects_Add(textOverlay);

// Stream to RTMP
capture.Network_Streaming_Enabled = true;
capture.Network_Streaming_Format = NetworkStreamingFormat.RTMP_FFMPEG_EXE;
var ffmpegOutput = new FFMPEGEXEOutput();
ffmpegOutput.FillDefaults(DefaultsProfile.MP4_H264_AAC, true);
ffmpegOutput.OutputMuxer = OutputMuxer.FLV;
capture.Network_Streaming_Output = ffmpegOutput;
capture.Network_Streaming_URL = "rtmp://streaming-server/live/stream_key";

// Also record locally
capture.Output_Filename = "backup.mp4";
capture.Output_Format = new MP4Output();

await capture.StartAsync();

MFormats SDK

C#
// MFormats: Manual frame loop with overlay + streaming
MFReaderClass reader = new MFReaderClass();
MFWriterClass localWriter = new MFWriterClass();
MFWriterClass rtmpWriter = new MFWriterClass();
MFRendererClass renderer = new MFRendererClass();

// Configure RTSP source
reader.ReaderOpen("rtsp://192.168.1.100:554/stream", "");

// Configure outputs
localWriter.WriterSet("backup.mp4", 0, "");
rtmpWriter.WriterSet("rtmp://streaming-server/live/stream_key", 0, "");

while (capturing)
{
    MFFrame frame;
    reader.SourceFrameGet(-1, out frame, "");

    if (frame != null)
    {
        // Add overlay manually via MFTransform
        MFOverlayClass overlay = new MFOverlayClass();
        overlay.OverlayTextSet(frame,
            DateTime.Now.ToString() + " - Camera 1",
            10, 10, 14, "Arial", 0xFFFFFF, 0, "");

        // Clone frame for second output
        MFFrame clone;
        frame.MFClone(out clone, eMFrameClone.eMFC_Full, eMFCC.eMFCC_Default);

        // Write to local file
        localWriter.WriterPut(frame, "");

        // Write to RTMP stream
        rtmpWriter.WriterPut(clone, "");

        Marshal.ReleaseComObject(clone);
        Marshal.ReleaseComObject(frame);
    }
}

何时选择每个解决方案

在以下情况选择 Video Capture SDK

  • ✓跨平台采集应用程序(Windows、macOS、Linux、移动端)
  • ✓具有自动线程和缓冲区管理的管道式架构
  • ✓40+ 内置 GPU 加速视频和音频特效
  • ✓采集期间的运动检测、人脸检测、条形码扫描
  • ✓用于 OBS、Zoom、Teams 集成的虚拟摄像头输出
  • ✓具有永久许可选项的经济实惠许可
  • ✓具有独立启动/停止控制的多个独立输出
  • ✓工业相机支持(GenICam、GigE Vision)
  • ✓电视调谐器和 DVB 采集支持

在以下情况选择 MFormats SDK

  • ✓多厂商 SDI 支持:Blackmagic 之外还有 AJA、Bluefish444、Deltacast
  • ✓具有播放列表调度和自动化的广播播出
  • ✓用于直播广播的 HTML5 CG(字幕发生器)叠加
  • ✓广播工作室环境的同步锁定和参考同步
  • ✓对每个处理步骤的逐帧手动控制
  • ✓具有完整广播元数据支持的 MXF 容器格式
  • ✓与现有广播基础设施和 SDI 路由器的集成

决策矩阵

需求Video Capture SDKMFormats SDK胜出者
跨平台支持Video Capture SDK
具有独立控制的多输出Video Capture SDK
音频特效(40+ 内置)Video Capture SDK
GPU 视频特效Video Capture SDK
运动/人脸/条形码检测Video Capture SDK
虚拟摄像头输出Video Capture SDK
预算低于 2,000 欧元Video Capture SDK
永久许可选项Video Capture SDK
工业相机(GenICam)Video Capture SDK
电视调谐器/DVB 采集Video Capture SDK
多厂商 SDI(AJA、Bluefish444)MFormats SDK
广播用 HTML5 CG 叠加MFormats SDK

结论

Video Capture SDK .NET

Video Capture SDK 作为面向 .NET 开发者的跨平台、管道式采集引擎表现出色,适合需要丰富视频处理、检测功能、多个独立输出和广泛设备支持的场景。其声明式 API、40+ GPU 特效和永久许可使其成为从桌面到移动端大多数采集应用的性价比之选。

MFormats SDK

MFormats SDK 是需要多厂商 SDI 硬件支持(AJA、Bluefish444、Deltacast)、HTML5 CG 叠加和基于播放列表的播出自动化的广播工作流的有力选择。其基于帧的架构提供了适合专业广播环境的逐帧精细控制。但是,它仅支持 Windows,价格显著更高,且订阅过期后会添加水印。

The Reality

对于大多数 .NET 视频采集项目 - 尤其是需要跨平台支持、检测功能或经济实惠许可的项目 - Video Capture SDK 是明确的选择。MFormats 在 AJA/Bluefish 硬件集成和 CG 叠加工作流不可或缺的多厂商 SDI 广播工作室中占有一席之地。

Frequently Asked Questions

如果不续订订阅,我的 MFormats 应用程序会怎样?
MFormats 使用强制性年度订阅模式。如果您的订阅过期,水印会自动添加到您部署的应用程序的所有视频输出中。没有永久许可证备选方案。相比之下,Video Capture SDK 提供购买后无限期继续工作的永久许可证,没有水印惩罚。
Video Capture SDK 是否支持 AJA 或 Bluefish444 SDI 卡?
目前,Video Capture SDK 支持 Blackmagic DeckLink SDI 卡,但不支持 AJA 或 Bluefish444 硬件。如果您的项目需要在 Blackmagic 之外还支持 AJA、Bluefish 和 Deltacast 的多厂商 SDI,MFormats 是该特定需求的更好选择。
Video Capture SDK 能在 macOS 和 Linux 上运行吗?
可以。Video Capture SDK 支持 Windows、macOS(Apple Silicon 和 Intel)、Linux x64、Linux ARM64、Android 和 iOS。MFormats 由于其基于 COM 的架构仅支持 Windows。
5名开发者团队3年的定价模式如何比较?
5名开发者3年期间,MFormats 许可单独报价(Medialooks 不公布价格)。Video Capture SDK Lifetime·Team许可证为 1,500 欧元一次性购买,涵盖购买组织在同一城市一个地点的所有开发者。
MFormats 有内置的运动检测或人脸检测吗?
没有。MFormats 不包含内置检测功能。您需要集成第三方库来实现运动检测、人脸检测或条形码扫描。Video Capture SDK 将所有这些作为内置功能包含在内,并带有事件驱动的回调。
哪个 SDK 更适合广播播出应用程序?
MFormats 专门为广播播出工作流设计。它包括播放列表调度、HTML5 CG 叠加、同步锁定支持和多厂商 SDI 输出。如果您的主要用途是广播播出自动化,MFormats 是更强的选择。
我能从 MFormats 迁移到 Video Capture SDK 吗?
可以,但编程模型不同。MFormats 使用基于帧的抓取-处理-输出循环,而 Video Capture SDK 使用声明式管道。迁移通常涉及用管道配置和事件处理程序替换手动帧循环。大多数团队发现 SDK 代码显著更短且更易维护。根据项目复杂性,预计迁移需要 1-3 周。

开始使用

Medialooks 不公布 MFormats 价格;许可单独报价。产品信息见 medialooks.com/mformats,已于2026-09-06核实。

Related Comparisons