通过编程接口(API)精确控制 OBS Studio 中的场景和源配置,以实现高级视频捕捉和流设置。
obs_sceneitem_set_pos():设置源在场景中的位置。
obs_sceneitem_set_scale():设置源的缩放(相对于其原始大小)。
obs_sceneitem_set_crop():设置源的裁剪。
obs_data_set_string():用于设置字符串类型的参数。
obs_sceneitem_set_visible():设置源的可见性。
obs_sceneitem_set_bounds():设置源的边界,用于确定如何在画布中放置和拉伸源。
obs_source_set_muted():设置源的静音状态。
obs_sceneitem_set_order():设置场景项的顺序(比如置顶或置底)。
代码示例:
// 设置显示器捕捉的扩展设置
void MainWindow::setupDisplayCapture() {
obs_source_t* display_capture = obs_source_create("monitor_capture", "Display Capture", NULL, NULL);
obs_data_t* settings = obs_data_create();
obs_data_set_int(settings, "monitor", 0); // 选择第一个显示器
obs_source_update(display_capture, settings);
obs_data_release(settings);
mainScene = obs_scene_create("Main Scene");
obs_sceneitem_t* scene_item = obs_scene_add(mainScene, display_capture);
// 设置位置
vec2 pos = {500.0, 300.0}; // x = 500, y = 300
obs_sceneitem_set_pos(scene_item, &pos);
// 设置缩放
vec2 scale = {0.5, 0.5}; // 缩放50%
obs_sceneitem_set_scale(scene_item, &scale);
// 设置裁剪
obs_sceneitem_crop crop = {100, 50, 100, 50}; // left = 100, top = 50, right = 100, bottom = 50
obs_sceneitem_set_crop(scene_item, &crop);
obs_source_release(display_capture);
obs_set_output_source(0, obs_scene_get_source(mainScene));
}