配置数据:json表示
libobs接口导出:export、import
多线程中的缓冲队列:circlebuf动态循环缓冲
UI => libobs => 插件
C实现的,拥有一个全局变量控制所有事务。
插件都是作为一个独立的动态库存在,对外抛出插件定义个接口,在libobs中合适的时候通过dlopen打开插件库,调用具体的接口。
主要是实现几个插件的接口:创建(创建回调)、销毁、update(属性更新)、video_render(视频渲染)等接口。
UI属性:插件创建一个obs_property属性。应用层UI在对应的位置去遍历插件的属性接口,拿到属性后,根据对应的类型创建不同的UI。
编解码器属性:编解码器插件把对应的自己的数据注册到创建的属性中,UI层通过对应的编解码器获取到对于的属性。
通过findwindow接口找到对应窗口的句柄,再通过BitBlt接口完成数据的拷贝。
可以使用窗口采集的BitBlt方式(桌面也是窗口的一种)。另外,效率较高的是采用DXGI接口采集。