17个版本
0.4.1 | 2022年9月27日 |
---|---|
0.4.0 | 2022年9月22日 |
0.3.4 | 2022年9月13日 |
0.3.0 | 2021年12月6日 |
0.1.5 | 2020年3月13日 |
#141 in 视频
每月48次下载
1MB
29K SLoC
Rust OBS包装器
围绕OBS API的安全包装,用于创建OBS源、滤镜和效果。包装器相当不完整,未来可能会看到API的重大变化。
此仓库还包括在/plugins
文件夹中使用包装器创建的插件。
插件
文件夹 | 描述 |
---|---|
/scroll-focus-filter | 一个OBS滤镜,可以将当前聚焦的X窗口放大 |
/rnnoise-denoiser-filter | 一个用于去除麦克风背景噪音的OBS滤镜 |
使用方法
在您的Cargo.toml
文件中添加以下部分,将module-name>
替换为模块名称
[dependencies]
obs-wrapper = "0.4"
[lib]
name = "<module-name>"
crate-type = ["cdylib"]
创建插件的过程
- 创建一个实现Module的结构体
- 创建一个将存储插件状态的结构体
- 实现模块所需的功能
- 在模块的
load
方法中启用已启用的功能
use obs_wrapper::{
// Everything required for modules
prelude::*,
// Everything required for creating a source
source::*,
// Macro for registering modules
obs_register_module,
// Macro for creating strings
obs_string,
};
// The module that will handle creating the source.
struct TestModule {
context: ModuleContext
};
// The source that will be shown inside OBS.
struct TestSource;
// The state of the source that is managed by OBS and used in each trait method.
struct SourceData;
// Implement the Sourceable trait for TestSource, this is required for each source.
// It allows you to specify the source ID and type.
impl Sourceable for TestSource {
fn get_id() -> ObsString {
obs_string!("test_source")
}
fn get_type() -> SourceType {
SourceType::FILTER
}
}
// Allow OBS to show a name for the source
impl GetNameSource<SourceData> for TestSource {
fn get_name() -> ObsString {
obs_string!("Test Source")
}
}
// Implement the Module trait for TestModule. This will handle the creation of the source and
// has some methods for telling OBS a bit about itself.
impl Module for TestModule {
fn new(context: ModuleContext) -> Self {
Self { context }
}
fn get_ctx(&self) -> &ModuleContext {
&self.context
}
// Load the module - create all sources, returning true if all went well.
fn load(&mut self, load_context: &mut LoadContext) -> bool {
// Create the source
let source = load_context
.create_source_builder::<TestSource, SourceData>()
// Since GetNameSource is implemented, this method needs to be called to
// enable it.
.enable_get_name()
.build();
// Tell OBS about the source so that it will show it.
load_context.register_source(source);
// Nothing could have gone wrong, so return true.
true
}
fn description() -> ObsString {
obs_string!("A great test module.")
}
fn name() -> ObsString {
obs_string!("Test Module")
}
fn author() -> ObsString {
obs_string!("Bennett")
}
}
安装
- 运行
cargo build --release
- 将
/target/release/<module-name>.so
复制到您的OBS插件文件夹(/usr/lib/obs-plugins/
) - 插件应在OBS内部可用
许可协议
与obs-studio一样,obs-wrapper
采用GNU通用公共许可证v2.0。
有关详细信息,请参阅LICENSE。
依赖关系
~0.6–3MB
~60K SLoC