VisioForge

Media Blocks SDK .NET在C#中构建模块化媒体管道

使用 Media Blocks SDK .NET 轻松灵活地创建强大的多媒体应用程序 — 这是一个模块化工具包,允许您像视觉构造器一样构建复杂的视频工作流(相机 → 编解码器 → 输出)。它支持录制为 MP4, MKV 和 AVI,以及通过 HLS, RTMP 和 RTSP 进行流式传输,提供丰富的效果集,包括色彩校正、去隔行、水印、屏幕捕获和音频处理。凭借内置的计算机视觉、二维码识别、人脸跟踪以及对 Blackmagic 和 ONVIF 设备的全面支持,它为任何项目带来了专业级功能。该 SDK 与 WinForms, WPF, MAUI, Xamarin 和 Avalonia 无缝协作,使您可以轻松地将高级媒体功能集成到桌面和移动应用程序中。

安装

使用 NuGet 快速安装

使用包管理器控制台直接在您的项目中安装 SDK:

Install-Package VisioForge.DotNet.MediaBlocks

或者在 Visual Studio 的 NuGet 包管理器中搜索 VisioForge.DotNet.MediaBlocks 查看安装指南 →

主要优势

模块化架构

200 多个处理模块,像积木一样连接以创建自定义媒体管道

跨平台

支持 Windows, macOS, Linux, Android 和 iOS,兼容所有主要 .NET UI 框架

硬件加速

支持 NVIDIA, Intel 和 AMD 的 GPU 加速编码/解码,以实现最高性能

管道示例

// Create MediaBlocks pipeline
_pipeline = new MediaBlocksPipeline();

// Add file source
var fileSourceSettings = await UniversalSourceSettings.CreateAsync("video.mp4");
var videoStreamAvailable = fileSourceSettings.GetInfo().VideoStreams.Count > 0;
var audioStreamAvailable = fileSourceSettings.GetInfo().AudioStreams.Count > 0;

var fileSource = new UniversalSourceBlock(fileSourceSettings);

// Add video renderer
if (videoStreamAvailable)
{
    var videoRenderer = new VideoRendererBlock(_pipeline, VideoView1);
    _pipeline.Connect(fileSource, videoRenderer);
}

// Add audio output
if (audioStreamAvailable)
{
    var audioOutputDevice = (await DeviceEnumerator.Shared.AudioOutputsAsync(
        AudioOutputDeviceAPI.DirectSound))[0];
    var audioOutput = new AudioRendererBlock(
        new AudioRendererSettings(audioOutputDevice));
    _pipeline.Connect(fileSource, audioOutput);
}

// Start playback
await _pipeline.StartAsync();

简单播放器

简单播放器管道使用 UniversalSourceBlock 读取和解码源文件,使用 VideoRendererBlock 显示视频,使用 AudioRendererBlock 播放音频。

交互式管道可视化

Loading pipeline diagram...

高级播放器

高级播放器管道包括用于解码文件或流的 UniversalSourceBlock、视频和音频渲染器以及效果处理模块。

// Create MediaBlocks pipeline
_pipeline = new MediaBlocksPipeline();

// Add file source
var fileSourceSettings = await UniversalSourceSettings.CreateAsync(edFilename.Text);
var videoStreamAvailable = fileSourceSettings.GetInfo().VideoStreams.Count > 0;
var audioStreamAvailable = fileSourceSettings.GetInfo().AudioStreams.Count > 0;

var fileSource = new UniversalSourceBlock(fileSourceSettings);

// Add video renderer, text overlay and image overlay
if (videoStreamAvailable)
{
    var videoRenderer = new VideoRendererBlock(_pipeline, VideoView1);
    var textOverlay = new TextOverlayBlock(new TextOverlaySettings("Hello world!"));
    var imageOverlay = new ImageOverlayBlock(new ImageOverlaySettings("logo.png"));

    _pipeline.Connect(fileSource, textOverlay);
    _pipeline.Connect(textOverlay, imageOverlay);
    _pipeline.Connect(imageOverlay, videoRenderer);
}

// Add audio output and equalizer
if (audioStreamAvailable)
{
    var audioOutputDevice = (await DeviceEnumerator.Shared.AudioOutputsAsync(AudioOutputDeviceAPI.DirectSound))[0];
    var audioOutput = new AudioRendererBlock(new AudioRendererSettings(audioOutputDevice));

    var equalizer = new EqualizerParametricBlock();
    // set some equalizer settings

    _pipeline.Connect(fileSource, equalizer);
    _pipeline.Connect(equalizer, audioOutput);
}

// Start playback
await _pipeline.StartAsync();

带效果的高级播放器管道

Loading pipeline diagram...

// Create MediaBlocksPipeline object
_pipeline = new MediaBlocksPipeline();

// Add default video and audio sources
var videoSources = (await DeviceEnumerator.Shared.VideoSourcesAsync()).ToList();
var videoSource = new SystemVideoSourceBlock(new VideoCaptureDeviceSourceSettings(
    videoSources.Find(x => x.Name.Contains("920"))));

var audioSources = (await DeviceEnumerator.Shared.AudioSourcesAsync()).ToList();
var audioSource = new SystemAudioSourceBlock(audioSources[0].CreateSourceSettings());

// Add video renderer
var videoRenderer = new VideoRendererBlock(_pipeline, videoView: VideoView1);

// Add audio renderer
var audioRenderers = (await DeviceEnumerator.Shared.AudioOutputsAsync()).ToList();
var audioRenderer = new AudioRendererBlock(new AudioRendererSettings(audioRenderers[0]));

// Connect everything
_pipeline.Connect(videoSource, videoRenderer);
_pipeline.Connect(audioSource, audioRenderer);

// Start preview
await _pipeline.StartAsync();

相机预览

相机/麦克风简单预览管道包含设备源模块和视频/音频渲染器模块。

将使用默认设备。

相机预览管道

Loading pipeline diagram...

RTSP 预览

RTSP 预览管道,包括 RTSP 源模块(内部带有解码器)、视频和音频渲染器。

// Create Media Blocks pipeline
_pipeline = new MediaBlocksPipeline();

// Create video renderer
var videoRenderer = new VideoRendererBlock(_pipeline, VideoView1);

// Add RTSP camera source
var rtsp = await RTSPSourceSettings.CreateAsync(new Uri(edURL.Text), 
    edLogin.Text, edPassword.Text, audioEnabled: cbAudioStream.Checked);
var rtspSource = new RTSPSourceBlock(rtsp);

_pipeline.Connect(rtspSource, videoRenderer);

// Add audio output (if required)
if (cbAudioStream.Checked && rtsp.IsAudioAvailable())
{
    var audioOutputDevice = (await DeviceEnumerator.Shared.AudioOutputsAsync(
        AudioOutputDeviceAPI.DirectSound))[0];
    var audioOutput = new AudioRendererBlock(new AudioRendererSettings(audioOutputDevice));
    _pipeline.Connect(rtspSource, audioOutput);
}

// Start IP camera preview
await _pipeline.StartAsync();

RTSP 流管道

Loading pipeline diagram...

// Create the pipeline
_pipeline = new MediaBlocksPipeline();

// Add video and audio sources
var videoSources = (await DeviceEnumerator.Shared.VideoSourcesAsync()).ToList();
var videoSource = new SystemVideoSourceBlock(new VideoCaptureDeviceSourceSettings(videoSources[0]));

var audioSources = (await DeviceEnumerator.Shared.AudioSourcesAsync()).ToList();
var audioSource = new SystemAudioSourceBlock(audioSources[0].CreateSourceSettings());

// Add video renderer and specify VideoView control
var videoRenderer = new VideoRendererBlock(_pipeline, videoView: VideoView1);

// Add audio renderer
var audioRenderers = (await DeviceEnumerator.Shared.AudioOutputsAsync()).ToList();
var audioRenderer = new AudioRendererBlock(new AudioRendererSettings(audioRenderers[0]));

// Configure MP4 output
var output = new MP4OutputBlock(Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolder.MyVideos), "output.mp4"));

// Add video and audio tees
var videoTee = new TeeBlock(2, MediaBlockPadMediaType.Video);
var audioTee = new TeeBlock(2, MediaBlockPadMediaType.Audio);

// Connect everything
_pipeline.Connect(videoSource, videoTee);
_pipeline.Connect(audioSource, audioTee);

_pipeline.Connect(videoTee, videoRenderer);
_pipeline.Connect(audioTee, audioRenderer);

_pipeline.Connect(videoTee, output);
_pipeline.Connect(audioTee, output);

// Start MP4 recording
await _pipeline.StartAsync();

带预览的捕获

捕获管道有两个 Tee 模块,用于分离视频和音频流,允许在视频捕获的同时进行视频/音频预览。

带预览的捕获管道

Loading pipeline diagram...

Live Video Compositor

使用 Live Video Compositor 构建类似 OBS 的实时视频制作软件。这是一个基于 Media Blocks SDK .NET 构建的实时多输入、多输出视频合成引擎。您可以动态添加和移除摄像头、屏幕捕获、媒体文件、RTSP/IP 摄像头源和 NDI 源作为分层输入,通过 GPU 加速渲染进行混合,并同时输出到录制文件和直播平台。专为多摄像头切换、画中画布局、实时叠加和广播级音频混合而设计,所有功能均可通过 C# 代码在运行时完全控制。

动态输入与输出

随时添加或移除视频和音频源以及输出目标——即使合成器正在运行也不受影响。每个输入都在独立的管道中运行,因此单个源的故障不会影响整个合成。

GPU 加速混合

使用跨平台 GPU 加速渲染(OpenGL)或 CPU 回退,实时合成多个视频图层。以像素级精度的矩形定位每个源,控制 Z-order 堆叠顺序,并可选择信箱模式、拉伸或填充等缩放策略。

录制 + 直播 + 预览

同时输出到多个目标——录制为 MP4 或 WebM、向 YouTube 和 Facebook 进行直播推流、将视频发送到 Decklink 硬件,以及显示屏幕预览——全部由单个合成器实例实时完成。

实时叠加与特效

动态应用文字叠加、图片水印和合成后视频特效——无需重建管道。实时音频 VU 表提供专业级的电平监控,满足直播制作需求。

C# 中的 Live Video Compositor 设置

C#
// Create the Live Video Compositor (cross-platform, GPU-accelerated)
var settings = new LiveVideoCompositorSettings(1920, 1080, new VideoFrameRate(25));
var compositor = new LiveVideoCompositor(settings);

// Add a camera source (full-screen background layer)
var cameraInput = new LVCVideoAudioInput(
    "Camera", compositor,
    new SystemVideoSourceBlock(cameraSettings),
    videoInfo, audioInfo, new Rect(0, 0, 1920, 1080),
    autostart: true);
await compositor.Input_AddAsync(cameraInput);

// Start compositing — sources and outputs can be added/removed at any time
await compositor.StartAsync();

// Dynamically add screen capture as picture-in-picture overlay
var screenInput = new LVCVideoInput(
    "Screen", compositor,
    new ScreenSourceBlock(screenSettings), screenInfo,
    new Rect(1400, 50, 500, 300), autostart: true);
screenInput.ZOrder = 1;
await compositor.Input_AddAsync(screenInput);

// Dynamically add MP4 recording output while compositing is running
var mp4Output = new LVCVideoAudioOutput(
    "Recording", compositor,
    new MP4OutputBlock(mp4Settings), autostart: true);
await compositor.Output_AddAsync(mp4Output);

// Dynamically remove the screen overlay
await compositor.Input_RemoveAsync(screenInput.ID);

// Dynamically remove the recording output
await compositor.Output_RemoveAsync(mp4Output.ID);

Live Video Compositor 兼容 Media Blocks SDK .NET 支持的所有输入源和输出格式,包括摄像头、屏幕捕获、媒体文件、RTSP/IP 摄像头、NDI、Decklink 以及所有录制和直播输出。

VisioForge Media Blocks SDK .Net 主要功能包括:

核心功能

  • 音频/视频预览
  • 视频和音频捕获为多种格式
  • 帧捕获为 Bitmap 类、BMP, JPEG 和 PNG 文件
  • 视频处理和效果 (CPU/GPU)
  • 视频捕获设备控制
  • 网络流媒体
  • 运动检测
  • 自定义接口支持
  • 计算机视觉 API
  • PIP (画中画)
  • 屏幕捕获/窗口捕获
  • 人脸检测和对象跟踪
  • 多输出屏幕支持
  • 从扬声器捕获音频
  • 音频/视频文件标签读写支持

支持的输入设备

  • USB 网络摄像头和采集设备 (包括 4K)
  • JPEG/MJPEG, MPEG-4 和 H.264 HTTP/RTSP/RTMP IP 摄像机/服务器
  • DV 和 HDV MPEG-2 摄像机
  • PCI 采集卡
  • 电视调谐器 (带/不带内部 MPEG 编码器)
  • IP 摄像机支持的高清格式
  • 带 PTZ 支持的 ONVIF IP 摄像机
  • Blackmagic Decklink 设备
  • 音频采集设备和声卡
  • ASIO 设备

专业硬件

  • Blackmagic Decklink 输入/输出支持
  • FLIR/Teledyne 相机 (USB3Vision/GigE)
  • Basler 相机 (USB3Vision/GigE)
  • DV 和 HDV MPEG-2 摄像机
  • PCI 采集卡
  • 电视调谐器 (带/不带 MPEG 编码器)
  • 带 PTZ 支持的 ONVIF IP 摄像机
  • ASIO 设备

  • Allied Vision 相机
  • 动画 GIF
  • Basler 相机 (USB3Vision/GigE)
  • CDG 卡拉 OK
  • 回退开关
  • GenICam (工业相机)
  • HTTP
  • HTTP MJPEG(源)
  • 图像序列
  • 本地文件
  • 内存缓冲区
  • NDI
  • PulseAudio
  • Raspberry Pi 相机
  • RTMP
  • RTSP
  • RTSP RAW
  • 屏幕捕获
  • SRT
  • 系统音频
  • 系统视频
  • 测试信号
  • UDP/RTP
  • URI (文件/网络)

音频处理

  • 放大
  • 平衡
  • 样本格式转换器
  • 负载标准化器
  • 混音器
  • 重采样器
  • 样本抓取器
  • 时间戳校正器
  • 切比雪夫带阻
  • 切比雪夫限制
  • 压缩器/扩展器
  • Csound 滤波器
  • EBU R128 电平
  • 回声
  • 均衡器 (10 段)
  • 均衡器 (参数)
  • HRTF 渲染
  • 卡拉 OK
  • 移除静音
  • 混响
  • 缩放/速度
  • 音量
  • VU 表
  • 宽立体声

条形码阅读器

  • QR 码
  • UPC-A、UPC-E
  • EAN-8、EAN-13
  • 39 码(Code 39)
  • 93 码(Code 93)
  • 128 码(Code 128)
  • 库德巴码(Codabar)
  • 交叉二五码(ITF)
  • GS1 DataBar(RSS-14)
  • 数据矩阵码(Data Matrix)
  • 阿兹特克码(Aztec)
  • PDF-417

音频编码器

  • AAC
  • ADPCM
  • ALAW
  • AptX
  • FLAC
  • MP2
  • MP3
  • OPUS
  • Speex
  • Vorbis
  • WAV
  • Wavpack
  • WMA(Windows Media Audio,Windows 媒体音频)

视频编码器 (CPU/GPU)

  • AV1
  • DV
  • GIF
  • H.264
  • H.265/HEVC
  • MJPEG
  • MPEG-2
  • MPEG-4
  • PNG
  • Theora
  • VP8/VP9(VPX)
  • WMV (Windows Media Video)
  • NVENC, AMD, Intel 硬件编码器支持
  • iOS/macOS/Android 硬件编码器支持

视频处理

  • 老化
  • Alpha 组合
  • 自动去隔行
  • Bayer 转 RGB
  • 色度键
  • 编解码器 Alpha 解复用
  • 色彩效果
  • 去隔行
  • 骰子
  • 边缘检测
  • 鱼眼
  • 翻转/旋转
  • Gamma
  • 高斯模糊
  • 灰度
  • 图像覆盖
  • 图像覆盖 Cairo
  • 隔行扫描
  • 关键帧检测器
  • LUT 处理器
  • 镜像
  • 移动模糊
  • 移动回声
  • 移动缩放回声
  • 光学动画黑白
  • 覆盖管理器
  • 透视
  • 捏合
  • 伪 3D
  • 二维码覆盖
  • 调整大小
  • 样本抓取器
  • Sobel 边缘
  • 球体
  • 正方形
  • 拉伸
  • 文本覆盖
  • 隧道
  • 旋转
  • 视频平衡
  • 像素格式转换器
  • 视频混合器
  • 扭曲镜像
  • 水波纹
  • 缩放框

文件接收器

  • ASF
  • AVI
  • DASH
  • HLS
  • HTTP MJPEG 实时输出
  • MKV(Matroska)
  • MOV(QuickTime)
  • MP4
  • MPEG-PS
  • MPEG-TS
  • MXF
  • OGG
  • WAV
  • WebM

网络流媒体

  • Facebook Live(推流)
  • HLS
  • NDI
  • RTMP
  • RTSP
  • Shoutcast
  • SRT
  • YouTube Live(推流)

Blackmagic Decklink 模块

  • 音频接收器
  • 音频源
  • 视频接收器
  • 视频源

音频可视化器

  • Bumpscope
  • Corona
  • Infinite
  • Jakdaw
  • Jess
  • LV Analyzer(分析器)
  • LV Scope(示波器)
  • Oinksie
  • Spacescope
  • Spectrascope
  • Synaescope
  • Wavescope

视频解码器

  • AV1 解码器
  • H.264 解码器
  • HEVC 解码器
  • JPEG 解码器
  • VP8 解码器
  • VP9 解码器
  • NVIDIA, Intel 和 AMD 加速解码器
  • Android 硬件解码器
  • iOS 硬件解码器

特殊模块

  • 条形码检测器
  • 数据处理器
  • 数据样本抓取器
  • 调试时间戳
  • 解密器
  • 加密器
  • 多队列
  • 空渲染器
  • 队列
  • SRTP 解密器
  • SRTP 加密器
  • Tee (分离器)

定价

选择年度订阅或终身许可证

常规许可证

€500/ 年
  • 一年内免费的小型和大型升级
  • 订阅结束后 SDK 继续运行
  • 优先支持
  • 每年自动续订 (可随时取消)
  • 包含所有 200+ 处理模块
最佳价值

终身许可证

€1,500/ 一次性
购买终身许可证
  • 永久无限更新
  • 优先支持和修复
  • 一次性付款
  • 包含所有未来功能
  • 包含所有 200+ 处理模块

非商业用途免费。请联系我们获取免费许可证。

所有许可证均包含免版税分发权。

源代码许可证

此SDK的源代码许可可按需提供。请联系我们的销售团队讨论定价和许可条款。

申请源代码许可证

💰 通过捆绑包节省更多

此产品包含在我们的高性价比捆绑包中。获取更多产品并节省高达71%!

.NET Bundle Professional

年度:€700.00
终身:€1800.00

节省高达71%

包括:

  • Video Capture SDK .NET (Professional)
  • Media Player SDK .NET (Professional)
  • Video Edit SDK .NET (Professional)
  • Video Edit SDK FFMPEG .NET (Professional)
  • Media Blocks SDK .NET

.NET Bundle Premium

年度:€1000.00
终身:€2500.00

节省高达70%

包括:

  • Video Capture SDK .NET (Premium)
  • Media Player SDK .NET (Premium)
  • Video Edit SDK .NET (Premium)
  • Video Edit SDK FFMPEG .NET (Premium)
  • Media Blocks SDK .NET

系统要求

跨平台开发和部署的最低要求

操作系统
  • Windows 10 / 11 (32 位和 64 位)
  • Windows 8/8.1, Windows 7 SP1
  • Windows Server 2016 及更高版本
  • macOS 12 或更高版本
  • Ubuntu 22.04 / 24.04
  • Android 8 及更高版本
  • iOS 12 及更高版本
.NET Framework
  • .NET Framework 4.6.1 或更高版本
  • .NET Core 3.1
  • .NET 5/6/7/8/9/10(支持)
硬件
  • 至少 2 GB RAM (建议 4 GB)
  • Intel Core i5 或 AMD 同等处理器
  • GPU 加速支持可选 (NVIDIA/Intel/AMD)
UI 框架
  • WinForms
  • WPF
  • WinUI 3 桌面版
  • Avalonia
  • GTK#
  • MAUI
  • Xamarin.Android/iOS/Mac

文档和资源

开始使用 Media Blocks SDK 所需的一切

借助AI和MCP更快构建媒体管道

让您的AI编程助手理解Media Blocks的管道架构。连接VisioForge MCP服务器,获取关于区块选择、管道连接、源/汇配置和跨平台部署的上下文帮助 — 直接在Claude Code、VS Code或Cursor中使用。

区块和管道API参考
跨平台部署方案
精确的NuGet包解析
管道代码示例和模式

Claude Code

claude mcp add --transport http visioforge-sdk https://mcp.visioforge.com/mcp

VS Code (.vscode/mcp.json)

{ "servers": { "visioforge-sdk": { "type": "http", "url": "https://mcp.visioforge.com/mcp" } } }
阅读完整的MCP集成指南

准备好开始了吗?

下载免费试用版,立即开始构建您的媒体管道

常见问题

什么是Media Blocks SDK?它与其他VisioForge SDK有何不同?

Media Blocks SDK采用模块化管道架构,您可以像搭建积木一样连接各个处理模块(源、编码器、效果、输出)。与提供现成工作流的Video Capture或Media Player SDK不同,Media Blocks让您完全控制媒体管道的每个阶段,非常适合自定义或复杂的应用场景。

如何在C#中构建媒体管道?

创建MediaBlocksPipeline实例,添加源模块(文件、摄像头、RTSP、屏幕捕获),连接处理模块(编码器、效果、叠加层),并附加输出模块(文件输出、渲染器、网络流)。调用StartAsync()运行管道。SDK自动处理线程管理、同步和硬件加速。

Media Blocks SDK能在macOS、Linux和移动平台上运行吗?

可以。Media Blocks SDK支持Windows、macOS 12及以上、Ubuntu 22.04/24.04、Android 8及以上和iOS 12及以上。可与WinForms、WPF、MAUI、Uno Platform、Avalonia和Xamarin配合使用。相同的管道代码可在所有平台上运行,并自动应用平台特定的渲染和硬件加速。

能否通过RTMP、RTSP或HLS进行视频流传输?

可以。SDK包含专用的流媒体输出模块,支持RTMP(YouTube Live、Facebook Live)、RTSP服务器、HLS、SRT、NDI和Shoutcast。您可以使用Tee模块将管道拆分为多个输出,从而将流媒体传输与本地录制和预览相结合。

是否支持GPU加速编码和解码?

支持。Media Blocks SDK支持通过NVIDIA NVENC、Intel Quick Sync和AMD AMF进行硬件加速编码,以及硬件解码。在移动平台上,iOS和Android硬件编解码器会自动启用。这使得以最低CPU占用率实现实时4K处理成为可能。

能否使用工业相机(GigE Vision、USB3 Vision)和Blackmagic Decklink?

可以。SDK包含通过GigE Vision和USB3 Vision连接GenICam兼容工业相机(Basler、Allied Vision、FLIR/Teledyne)的源模块。Blackmagic Decklink设备通过专用的源模块和输出模块支持专业视频采集和输出。

什么是 Live Video Compositor?它与手动构建管道有何不同?

Live Video Compositor 是基于 Media Blocks SDK 构建的高级实时视频合成引擎。虽然您可以使用单独的模块手动组装自定义混合管道,但合成器开箱即用地提供了构建 OBS 类应用所需的完整架构——包括基于桥接的输入隔离、GPU 加速合成、运行时动态源和输出管理、Z-order 图层控制、实时文字和图片叠加、合成后特效以及音频 VU 表。它非常适合使用 C# 和 .NET 构建多摄像头切换系统、直播软件或广播制作工具。