libobs_sources/
lib.rs

1//! A library for creating OBS sources without having to figure out what properties are used by sources.
2//! Example usage (for window capture only on windows):
3//! ```no_run
4//! use libobs_window_helper::WindowSearchMode;
5//! use libobs_wrapper::{context::ObsContext, sources::ObsSourceBuilder, utils::{OutputInfo, StartupInfo}};
6//! use libobs_sources::windows::WindowCaptureSourceBuilder;
7//!
8//! # // Create an obs context first
9//! # // Start the OBS context
10//! # let startup_info = StartupInfo::default();
11//! # let mut context = ObsContext::new(startup_info).unwrap();
12
13//! # let output_info = OutputInfo::new(
14//! #     "ffmpeg_muxer", "output", None, None
15//! # );
16//!
17//! let output = context.output(output_info).unwrap();
18//!
19//! // Do other initialization for video encoders, audio encoders, etc.
20//!
21//! let windows = WindowCaptureSourceBuilder::get_windows(WindowSearchMode::IncludeMinimized).unwrap();
22//! let example_window = windows.get(0).unwrap();
23//!
24//! WindowCaptureSourceBuilder::new("Test Window Capture")
25//! .set_window(example_window)
26//! // Obs Output is created from `ObsContext`
27//! .add_to_output(output, 0)
28//! .unwrap();
29//! `````
30
31#[cfg(not(windows))]
32compiler_error!("libobs-sources can only be used in windows");
33
34pub mod windows;
35
36pub mod encoders;
37pub mod output;
38mod macro_helper;
39
40pub use libobs_wrapper::{data::ObsObjectUpdater, sources::ObsSourceBuilder};