滤镜
OBS 中的滤镜可附加到任意来源(场景或输入)上,以改变该来源的视觉或音频效果,例如色彩校正、色度键和降噪。本插件暴露了完整的 OBS 滤镜 API:列出可用的滤镜类型、读取和写入每个来源的滤镜链,以及通过事件响应滤镜变化。
函数
| 函数 | 说明 |
|---|---|
GetSourceFilterKindList() | 刷新可用滤镜类型列表 |
GetCachedFilterKinds() | 获取本地缓存的滤镜类型列表 |
GetSourceFilterList(SourceName) | 获取来源上的所有滤镜 |
GetCachedFiltersForSource(SourceName) | 获取某来源本地缓存的滤镜 |
HasCachedFiltersForSource(SourceName) | 检查某来源是否有已缓存的滤镜数据 |
CreateSourceFilter(Source, Name, Kind, Settings) | 向来源添加新滤镜 |
RemoveSourceFilter(Source, FilterName) | 从来源移除滤镜 |
SetSourceFilterEnabled(Source, Filter, Enabled) | 启用或禁用滤镜 |
SetSourceFilterName(Source, OldName, NewName) | 重命名滤镜 |
SetSourceFilterIndex(Source, Filter, Index) | 更改滤镜在链中的位置(0 = 顶部) |
SetSourceFilterSettings(Source, Filter, Settings, Overlay) | 更新滤镜配置 |
GetSourceFilter(Source, Filter) | 获取特定滤镜的详情 |
GetSourceFilterDefaultSettings(Kind) | 获取某滤镜类型的默认设置 |
注意: 滤镜通过 SourceName + FilterName 组合来标识(没有 UUID)。滤镜索引
0为处理链中最顶层的滤镜。
事件
订阅以下事件以响应滤镜变化:
OnSourceFilterCreated(SourceName, FilterName, FilterKind, FilterIndex, bEnabled):滤镜已添加到来源OnSourceFilterRemoved(SourceName, FilterName):滤镜已从来源移除OnSourceFilterNameChanged(SourceName, OldName, NewName):滤镜已重命名OnSourceFilterSettingsChanged(SourceName, FilterName):滤镜设置已修改OnSourceFilterEnableStateChanged(SourceName, FilterName, bEnabled):滤镜已启用/禁用OnSourceFilterListReindexed(SourceName):来源上的滤镜顺序已更改
示例
// Add a color correction filter to a source, then disable it.
Subsystem->CreateSourceFilter(
TEXT("Webcam"),
TEXT("Warmth"),
TEXT("color_filter_v2"),
Settings);
Subsystem->SetSourceFilterEnabled(TEXT("Webcam"), TEXT("Warmth"), false);
// Move a filter to the top of the chain.
Subsystem->SetSourceFilterIndex(TEXT("Webcam"), TEXT("Warmth"), 0);