首页 > 解决方案 > OBS - 录制屏幕时捕获帧

问题描述

我想记录我的整个屏幕并在 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 方面不是很有经验。

标签: cobs

解决方案


推荐阅读