期望用libobs从视频采集卡获取视频流,渲染到3D软件纹理
未找到obs从source中获取纹理的相关方法
首先了解到OBS是一个开源视频采集、解码、播放工具
获取了OBS github代码,并成功编译生成了obs studio播放器,能在生成的播放器中播放视频采集卡采集到的视频
然后了解到工程里有test工程
成功编译了test工程,修改代码,实现了简单的在windows程序内播放采集卡采集到的视频
由于是要把数据拿到其他软件中描画
删掉了window相关代码,如HINSTANCE
并合入了3D软件代码,程序能跑起来
然后卡住了,不知道从哪里拿到我想要的数据,不论是texture、image、raba数据,怎样都行
CreateOBS();
obs_load_all_modules();
obs_source_t* captureSource;
captureSource = obs_source_create("dshow_input", "DshowWindowsCapture", NULL, nullptr);
get_device_id(captureSource);
const char* deviceID = "";
if (!DeviceID.empty()) {
deviceID = DeviceID[1].c_str();
}
obs_data_t* setting = obs_data_create();
obs_data_t* curSetting = obs_source_get_settings(captureSource);
obs_data_apply(setting, curSetting);
obs_data_set_string(setting, "id", "dshow_input");
obs_data_set_string(setting, "video_device_id", deviceID);
obs_source_update(captureSource, setting);
//SceneContext scene = obs_scene_create("test scene");
//AddTestItems(scene, captureSource);
//obs_set_output_source(0, obs_scene_get_source(scene));
//DisplayContext display = CreateDisplay(hwnd);
//obs_display_add_draw_callback(display, RenderWindow, nullptr);
调试时在video线程外取source内数据,都是空的
提供参考思路:[OBS] 渲染 source,scene,transition,filter】链接:https://blog.csdn.net/felicityWSH/article/details/103295202
OBS数据采集及渲染过程
https://blog.csdn.net/m0_60259116/article/details/126410604
可以看看
参考一下
https://blog.csdn.net/balijinyi/article/details/80284504