VisioForge

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

在 C# 中用模块搭建视频管道 — 摄像头、编解码器、特效、输出,支持录制为 MP4、MKV、AVI 以及通过 HLS、RTMP、RTSP 推流。

每年 €500 起 · Lifetime 许可证 €1,500 起

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

想要现成的组件,而不是自己动手组装管线? Video Capture SDK .NET · Media Player SDK .NET · Video Edit SDK .NET

主要优势

模块化架构

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

跨平台

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

硬件加速

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

Media Blocks SDK .NET 是 VisioForge .NET 技术栈中的管线层:你不是去配置一个现成组件,而是用一个个独立的块来组装应用——一个源、任意数量的处理块,以及一个或多个输出端——并用 MediaBlocksPipeline.Connect 把它们连接起来。200 多个块涵盖文件与摄像头源、支持 PTZ 的 RTSP 和 ONVIF 网络摄像机、Blackmagic DeckLink、Basler 与 FLIR 工业相机、色彩校正、去隔行、色度键、叠加与音频处理、AI 推理、录制为 MP4、MKV、MOV、WebM、MPEG-TS 和 MXF,以及通过 HLS、RTMP、RTSP、SRT 和 NDI 推流。用 TeeBlock 分流后,一条管线可以同时录制、推流和预览。该 SDK 通过 NuGet 包 VisioForge.DotNet.MediaBlocks 安装,可在 Windows、macOS、Linux、Android 和 iOS 上配合 WinForms、WPF、MAUI、Uno Platform、Avalonia 和 Unity 运行。

管道示例

简单播放器

C#

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

// 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();

高级播放器

C#

高级播放器管道包括用于解码文件或流的 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();

相机预览

C#

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

// 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[0]));

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();

RTSP 预览

C#

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();

带预览的捕获

C#

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

// 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();

定价

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

Media Blocks SDK .NET 按开发者授权,提供两种形式。Regular License 每年 500 欧元,自动续订,包含该年度发布的所有小版本和大版本升级;订阅结束后 SDK 仍可继续使用,只是不再获得新版本。Lifetime·Team License 为一次性支付 1,500 欧元,包含产品生命周期内的小版本与大版本更新以及未来所有功能。两种授权都包含全部 200 多个处理块、电子邮件支持和免版税分发权,因此你发布的应用无需支付运行时费用。非商业用途可按需免费申请,源代码授权也可按需提供。年度授权可用信用卡或银行转账与 SEPA 支付,终身授权通过信用卡支付。如果项目需要不止一个 VisioForge SDK,.NET 套装的价格低于单独购买相同产品。

常规许可证

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

Lifetime·Team 许可证

€1,500/ 一次性
  • 产品生命周期内的主要和次要更新
  • 电子邮件支持
  • 一次性付款
  • 包含所有未来功能
  • 包含所有 200+ 处理模块

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

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

💰 通过捆绑包节省更多

此产品包含在我们的高性价比捆绑包中。以低于单独购买的价格获取更多产品。

.NET Bundle Professional

年度:€700
单独购买需€1,900
终身:€1,800
单独购买需€5,500

包括:

.NET Bundle Premium

年度:€1,000
单独购买需€2,500
终身:€2,500
单独购买需€7,500

包括:

源代码许可证

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

申请源代码许可证

AI 视频分析与语音

将 AI 推理、隐私脱敏、开放词汇检测、视觉语言理解、语义搜索和语音识别直接添加到 Media Blocks SDK .NET 管道中。

Media Blocks SDK .NET 通过 VisioForge.DotNet.Core.AI 和 VisioForge.DotNet.Core.AI.Whisper,将 AI 处理模块直接添加到 C# 媒体管道中。开发者可以在现有的源、渲染器、编码器和流式传输输出之间插入 OCR、车牌识别、YOLO/RT-DETR/开放词汇目标检测、ByteTrack 目标分析、人脸识别、自动 PII 脱敏、背景移除、视觉语言字幕生成、视频嵌入/语义搜索以及自定义 ONNX 推理。基于 ONNX Runtime 的模块可以在 CPU 上运行,或在匹配的运行时可用时在 CUDA、DirectML 和 CoreML 等硬件提供程序上运行,而 Whisper 语音转文字则通过 GGML/whisper.cpp 在本地运行,并可选配 Silero VAD 以获得干净的语音片段。AI 模型文件由应用程序提供或下载,因此团队可以完全掌控模型的选择和许可。最终成果是一个模块化的 .NET AI 视频 SDK,可用于构建可搜索的 OCR 视频、ANPR 系统、人数统计、绊线分析、隐私合规脱敏、自然语言视频搜索、实时字幕以及 SRT/VTT 导出,且无需脱离 Media Blocks 管道模型。

浏览 AI 块

OCR 与 ANPR

使用基于 PaddleOCR 的 ONNX 模块和结构化检测事件,识别实时视频或文件中的文本和车牌。

目标检测与分析

运行 YOLOX、YOLOv8 或 RT-DETR 模型,然后添加 ByteTrack ID、越线检测、多边形区域、计数器和叠加层。

人脸识别

检测人脸、注册身份、与 FaceGallery 进行匹配,并将识别出的人物绘制到视频流中。

背景移除

使用 ONNX 抠像模型实现背景虚化、纯色替换、图像替换或透明 RGBA 输出。

自定义 ONNX 推理

将您自己的 ONNX 模型附加到视频帧上,并接收原始张量输出,用于针对特定应用的后处理。

离线 Whisper 字幕

使用 Whisper 在本地转录音频,通过 Silero VAD 进行语音分段,渲染实时字幕,或写入 SRT/VTT 文件。

PII 脱敏

自动模糊、马赛克或纯色填充人脸、车牌和屏幕文本,并可选配正则表达式过滤电子邮件和电话号码。

开放词汇检测与视觉语言理解

使用 OWLv2 或 Grounding DINO 根据自由文本提示检测目标,而非固定类别列表;或使用 Florence-2 视觉语言模块完成帧字幕生成、OCR 和短语定位——可在运行时更换提示词和置信度阈值。

语义视频搜索

在处理视频的同时构建基于 CLIP 的嵌入索引,然后使用自然语言查询来查找匹配的画面。

相同的模块实例也可以通过 Video_Processing_AddBlock/Audio_Processing_AddBlock 直接接入 VideoCaptureCoreX 和 MediaPlayerCoreX——无需手动创建 MediaBlocksPipeline。请参阅 Video Capture SDK .NET 和 Media Player SDK .NET 页面上的 AI 功能介绍。

Live Video Compositor

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

Live Video Compositor 是基于同一管线模型构建的多输入、多输出合成引擎。你用画布尺寸和帧率创建它——LiveVideoCompositorSettings(1920, 1080, new VideoFrameRate(25))——然后把每个源作为输入加入,各自带有目标矩形和 Z 轴顺序:铺满背景的摄像头、作为画中画叠加的屏幕捕获、媒体文件、RTSP 摄像机或 NDI 信号。合成运行期间可以用 Input_AddAsync 和 Output_AddAsync 添加和移除输入与输出,每个输入运行在自己独立的管线中,因此某个源出错不会影响其他源。图层通过 GPU 加速的 OpenGL 渲染(并带 CPU 回退)混合,结果可以同时送往多个目标——MP4 或 WebM 录制、YouTube 或 Facebook 直播、DeckLink 采集卡以及屏幕预览。

动态输入与输出

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

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 以及所有录制和直播输出。

Unity 支持

Media Blocks 以单个累积式 .unitypackage 的形式提供给 Unity 6,内含媒体文件播放器和实时 RTSP 查看器示例场景,一次导入即可面向 Windows、Android、macOS 和 iOS。

Media Blocks 的横向对比

与开发团队通常会一并评估的库和 SDK 的逐项对比。

完整的模块、编解码器和设备参考

SDK 支持的每一个块、编解码器、容器和设备——源、编码器、解码器、滤镜、输出端和硬件——都列在单独的参考页面上。

打开完整的块参考 →

安装

使用 NuGet 快速安装

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

Install-Package VisioForge.DotNet.MediaBlocks

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

系统要求

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

操作系统
  • 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
  • Unity

文档和资源

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

用 AI 编程代理进行开发

正在与 AI 代理(Claude Code、Cursor、GitHub Copilot、Gemini CLI、OpenAI Codex)一起编程?VisioForge 为 Media Blocks SDK .NET 提供机器可读的接口,让你的代理一次就能正确完成集成:正确的 NuGet 包、许可证注册、项目设置,以及它原本只能靠猜的跨平台部署细节。

实时 API 查询和类查找
按平台划分的集成手册
跨平台部署方案
完整文档以 llms.txt 提供

连接 MCP 服务器

MCP

把 VisioForge MCP 服务器添加到你的代理,即可获得上下文相关的帮助:搜索 API、查找类和成员、获取可运行的代码示例、拉取部署指南,全部在编辑器中完成。

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 服务器使用指南

加载 Agent Skill

Agent Skills

我们为每个 (SDK, 平台) 组合发布可下载的技能 —— 对 Media Blocks SDK .NET 而言,每个平台都有一份现成的 SKILL.md(需要哪些 NuGet 包、许可证代码、csproj 设置、常见陷阱),外加一个你的代理可以照抄的可运行示例项目。兼容 Claude Code、Cursor、OpenAI Codex、Gemini CLI 等 30 多个代理(Cloudflare Agent Skills RFC)。

让你的代理指向技能索引

https://www.visioforge.com/.well-known/agent-skills/index.json
浏览技能和各工具的设置

更想把整份文档喂给代理?也提供纯 Markdown 格式: /llms.txt · /llms-full.txt

准备好开始了吗?

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

常见问题

什么是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 构建多摄像头切换系统、直播软件或广播制作工具。

我可以在 Unity 中使用 Media Blocks SDK 吗?

可以。Media Blocks SDK .NET 为 Unity 6 提供了一个跨平台的 .unitypackage,只需导入一次即可面向 Windows、Android、macOS 和 iOS。您将获得完整的 SDK——捕获、源、解码器和编码器、特效、混合、录制和流式传输——并可将任意管道渲染到 Unity RawImage 中。随附两个示例场景(媒体文件播放器和实时 RTSP / IP 摄像头查看器)作为起点。有关设置和各平台构建指南,请参阅 Unity 文档。

它与 Unity 内置的 Video Player 有何不同?

Unity 的 Video Player 适合处理打包的视频片段,但它没有 RTSP / IP 摄像头输入、编解码器集有限,且不支持捕获或流式传输。Media Blocks SDK 增加了实时 RTSP 和 IP 摄像头播放、范围更广的格式和编解码器(H.264、H.265、AV1、VP8/VP9、ProRes、MJPEG 等)、设备捕获、录制以及对外流式传输——所有这些都通过一个一致的管道实现,并在 Windows、Android、macOS 和 iOS 上表现一致。

我可以从 Unity 应用录制或流式传输视频吗?

可以。在 Unity 构建中,您可以录制为 MP4、MKV 或 WebM,并通过 RTMP、SRT、HLS 或内置 RTSP 服务器进行广播,在移动端使用硬件加速的 H.264 / H.265 编码器。结合多个源、叠加层和视频混合器,可以精确合成您要录制或流式传输的内容——桌面端和移动端皆可。

我可以在 C# 中构建 AI 视频分析管道吗?

可以。Media Blocks SDK .NET 包含用于 OCR、ANPR、目标检测、目标分析、人脸识别、背景移除以及自定义 ONNX 推理的 VisioForge.DotNet.Core.AI 模块。您可以在同一个 MediaBlocksPipeline 中将这些模块与摄像头、RTSP 流、渲染器、编码器、文件输出和流式传输输出连接起来。

Whisper 语音转文字可以离线运行吗?

可以。VisioForge.DotNet.Core.AI.Whisper 包通过 GGML/whisper.cpp 后端在本地运行 Whisper,并可选用 Silero VAD 进行语音分段。它可以生成实时字幕、识别出的语音事件以及附带的 SRT 或 VTT 字幕文件,而无需将音频发送到云服务。

我可以使用自定义 ONNX 模型吗?

可以。OnnxInferenceBlock 让您能够对视频帧运行自定义的 ONNX Runtime 模型,并接收原始张量输出,供您自己的解码器或后处理代码使用。对于常见的检测器系列,YOLOObjectDetectorBlock 已经处理了 YOLOX、YOLOv8 和 RT-DETR 的预处理、解码、坐标映射和叠加层。

我可以将这些 AI 模块与 VideoCaptureCoreX 或 MediaPlayerCoreX 配合使用,而不必手动搭建管道吗?

可以。每个 AI 模块都同时实现了 VideoCaptureCoreX 和 MediaPlayerCoreX 所使用的处理模块接口,因此您可以在 StartAsync(捕获)或 OpenAsync/PlayAsync(播放)之前,通过 Video_Processing_AddBlock 或 Audio_Processing_AddBlock 注册相同的模块实例——无需手动创建 MediaBlocksPipeline。