OBS从渲染到推流过程分析

本文详细分析了OBS(Open Broadcasting Software)从渲染到推流的整个过程,包括渲染、生产推流数据和推流三个关键步骤。其中,`obs_reset_video`接口在初始化时被调用,它启动了两个线程,一个负责渲染和存储结果,另一个负责将渲染内容传递给推流线程。特别地,针对Windows平台的窗口捕获(Win-Capture)进行了深入探讨。
摘要由CSDN通过智能技术生成

obs中将渲染和生产推流数据,推流分为三个线程,整个过程交织在一起,不容易理清整个过程。下面先分别对三个过程进行分析,然后将整个过程链接起来: 

1.渲染:

//初始化
Obs.c: obs_reset_video 
//设置画布
Obs.c: obs_init_graphics
graphics.c : gs_create //一般创建使用opengl作为绘制设备
graphics.c : gs_enter_context 创建渲染画布thread_graphics
//初始化video
obs.c : obs_init_video

//开启渲染线程
obs.c : thread: obs_graphics_thread

obs-vidio.c: obs_graphics_thread //绘制线程

obs-vidio.c : while
{
    tick_sources: 拿源数据,(window capture, image ,camera…)
    output_frame; 绘制到texture上, 并将绘制后的帧数据缓存,等待发送线程获取
 	render_displays;//将opengl textture数据绘制到窗口
} 

Output_frame分支:
{
    obs-vidio.c : render_video
    {
        obs-vidio.c : render_main_texture
        obs-view.c : obs_view_render
        obs-source.c : obs_source_video_render(source)
        obs-source.c : render_video(source)
        obs-source.c : obs_source_render_async_video(source)
        obs-source.c : obs_source_draw_async_texture(source)
        obs
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值