OBS开发中,会常用到很多内部定义的源,本文将各种源枚举下,以方便查找。
OBS很多函数 是以源id为参数的,id,是定义在源的导出接口中的比如struct obs_source_info window_capture_info = {.id = "window_capture",.type = OBS_SOURCE_TYPE_INPUT,.output_flags = OBS_SOURCE_VIDEO | OBS_SOURCE_CUSTOM_DRAW,.get_name = wc_getname,.create = wc_create,.destroy = wc_destroy,.update = wc_update,.video_render = wc_render,.video_tick = wc_tick,.get_width = wc_width,.get_height = wc_height,.get_defaults = wc_defaults,.get_properties = wc_properties};OBS有哪些源ID呢,在此列举下:ID nameimage_source 图像color_source 色源slideshow 图像幻灯片放映ffmpeg_source 媒体源text_gdiplus 文本 (GDI+)text_ft2_source 文本 (FreeType 2)monitor_capture 显示器捕获window_capture 窗口捕获game_capture 游戏捕获dshow_input 视频捕获设备wasapi_input_capture 音频输入捕获wasapi_output_capture 音频输出捕获img_TransImg 透明图 —–自定义的比如 右键 添加按钮,会添加各种源,所用的相关API接口如下:/*** Enumerates all available inputs source types.** Inputs are general source inputs (such as capture sources, device sources,* etc).*/EXPORT bool obs_enum_input_types(size_t idx, const char **id);/** Returns the translated display name of a source */EXPORT const char *obs_source_get_display_name(const char *id);/** Returns capability flags of a source */EXPORT uint32_t obs_source_get_output_flags(const obs_source_t *source);/** Returns capability flags of a source type */EXPORT uint32_t obs_get_source_output_flags(const char *id);右键菜单代码,遍历源IDQMenu *OBSBasic::CreateAddSourcePopupMenu() const char *type; size_t idx = 0;while (obs_enum_input_types(idx++, &type)) {const char *name = obs_source_get_display_name(type);uint32_t caps = obs_get_source_output_flags(type);//...if (strcmp(type, "image_source") == 0 || strcmp(type, "monitor_capture") == 0 || strcmp(type, "dshow_input") == 0) //...{if ((caps & OBS_SOURCE_DEPRECATED) == 0) {addSource(popup, type, name);//addSource(popup, type, name);}else {addSource(deprecated, type, name);foundDeprecated = true;}foundValues = true;}}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)