我想记录我的整个屏幕,并在OBS中即时创建每个帧的图像。我想记录我通过Web套接字接收的第三方流,并希望在运行时提取流的每一帧。
我已经对源代码(https://github.com/obsproject/obs-studio)进行了全面的介绍,但是仍然不知道应该在哪里修改代码。
在graphics.c文件中,有一个gs_draw_sprite()方法,该方法获取保存帧的精灵并相应地对其进行渲染:
void gs_draw_sprite(gs_texture_t *tex, uint32_t flip, uint32_t width,
uint32_t height)
{
graphics_t *graphics = thread_graphics;
float fcx, fcy;
struct gs_vb_data *data;
fcx = width ? (float)width : (float)gs_texture_get_width(tex);
fcy = height ? (float)height : (float)gs_texture_get_height(tex);
data = gs_vertexbuffer_get_data(graphics->sprite_buffer);
if (tex && gs_texture_is_rect(tex))
build_sprite_rect(data, tex, fcx, fcy, flip);
else
build_sprite_norm(data, fcx, fcy, flip);
gs_vertexbuffer_flush(graphics->sprite_buffer);
gs_load_vertexbuffer(graphics->sprite_buffer);
gs_load_indexbuffer(NULL);
gs_draw(GS_TRISTRIP, 0, 0);
}
有没有办法获取这个精灵并将其渲染为位图?不幸的是,我对C语言不是很了解。