开播客户端

news2025/1/16 3:48:44

OBS架构

配置数据:json表示
libobs接口导出:export、import

多线程中的缓冲队列:circlebuf动态循环缓冲

分层

UI => libobs => 插件
请添加图片描述

libobs

C实现的,拥有一个全局变量控制所有事务。

  • 视频采集渲染线程、视频编码线程:
    频采集渲染线程负责生产视频帧,视频编码线程负责消耗视频帧,两个线程共同操作一个视频帧缓存队列,是一个标准的1对1生产者-消费者模型。
    1. 根据设置的视频输出频率,每隔固定时间处理所有源的输入,并融合成一张图像缓存起来
    2. 如果开启推流和录像,则通过信号通知视频编码线程编码视频帧
    3. 渲染视频到UI窗口,使用户可以编辑推流画面
    采集、渲染、编码都是调用相关的插件接口处理。libobs本身只作为一个框架存在,不处理具体的事务。
  • 音频采集、音频编码
    与视频采集编码一样是一个生产者和消费者的关系。
  • 推流线程

插件系统

插件都是作为一个独立的动态库存在,对外抛出插件定义个接口,在libobs中合适的时候通过dlopen打开插件库,调用具体的接口。

插件的创建

主要是实现几个插件的接口:创建(创建回调)、销毁、update(属性更新)、video_render(视频渲染)等接口。

属性系统

UI属性:插件创建一个obs_property属性。应用层UI在对应的位置去遍历插件的属性接口,拿到属性后,根据对应的类型创建不同的UI。
编解码器属性:编解码器插件把对应的自己的数据注册到创建的属性中,UI层通过对应的编解码器获取到对于的属性。

相关技术

窗口采集

通过findwindow接口找到对应窗口的句柄,再通过BitBlt接口完成数据的拷贝。

桌面采集

可以使用窗口采集的BitBlt方式(桌面也是窗口的一种)。另外,效率较高的是采用DXGI接口采集。

NVENC硬件编码技术

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/24162.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于PHP+MYSQL的网上鲜花店销售系统(含论文)

鲜花在人们的生活中是一个非常重要的东西,在节假日或者一些有特殊含义的日子里人们通常会给亲朋好友或者长辈们送上一束有特殊含义的鲜花来表示自己对节日的问候,为了给人们增加鲜花的选择性和降低购买的难度我们开发了本网上鲜花店销售系统 本网上鲜花店销售系统是通过当下最流…

CorelDRAW2023安装下载教程精简版矢量绘图软件

CDR全称是CorelRAW2023,它不同于Photoshop,PS是一款图片处理软件,而CDR是一款较为常用的矢量绘图设计软件,该软件给设计师提供了矢量动画、页面设计、网站制作、位图编辑和网页动画等多种功能,使用的比较多的版本是202…

【读点论文】CMT: Convolutional Neural Networks Meet Vision Transformers

CMT: Convolutional Neural Networks Meet Vision Transformers Abstract 视觉transformer已经成功地应用于图像识别任务,因为它们能够捕获图像中的长距离依赖性。然而,transformer和现有卷积神经网络(CNN)在性能和计算成本方面仍…

Pandas太慢?快使用Vaex DataFrame,每秒数亿数据算起来 ⛵

💦 作者:韩信子ShowMeAI 📘 数据分析实战系列:https://www.showmeai.tech/tutorials/40 📘 本文地址:https://www.showmeai.tech/article-detail/393 📢 声明:版权所有,转…

LR低代码快速开发平台 高效调整企业组织架构

组织架构以及围绕组织架构的设计、实施和变革,是企业管理永恒的话题,它上承公司的业务战略和运营模式,下接业务流程和信息系统建设,重要性不言而喻。数字化变革浪潮之下,商业模式的颠覆、价值链的重塑都需要由相匹配的…

解读商业智能BI,数据仓库中的元数据

之前的文章讨论过数据分析、数据治理、数据仓库等等,即使是非业内人员从字面意思,也是可以了解一二的,但是,很多人对于元数据可能就比较陌生了。那么,今天我们就来聊一聊元数据管理。 一、数据仓库 要说元数据&#…

IB 物理真题: 比潜热、理想气体

本题是 2017 年 IB 物理试卷 paper 2 的一道大题,在 SL 和 HL 的试卷中,这道题基本没什么区别,所以适用于所有考 IB 物理的学生。这道题主要涉及到了功率、比潜热、和理想气体的知识,具体讲了液氧蒸发成氧气的过程。如下图所示&am…

简述CompletableFuture异步任务编排

前言 在之前的项目开发中,都没怎么使用过CompletableFuture的功能,只听说过和异步编程有关。为了能够在将来有需要的时候用得上,这两天花了点时间学习了一下,并简单地总结一下如何使用CompletableFuture完成异步任务编排。 先创…

Linux20 -- 线程安全、保证线程安全的示例代码

一、线程安全 线程安全即就是在多线程运行的时候,不论线程的调度顺序怎样,最终的结果都是 一样的、正确的。那么就说这些线程是安全的。 线程安全:多线程程序,无论调度顺序咋样,都可以得到正确一致的结果。安全–正确…

React-fiber基础之requestAnimationFrame和requestIdleCallback

屏幕刷新率 目前大多数设备的屏幕刷新率是60次每秒浏览器渲染动画或者页面的每一帧的速率也需要根设备屏幕的刷新率保持一致页面是一帧一帧绘制出来的,当每秒的帧数(FPS)达到60,页面是流畅的,小于这个值,用…

公众号免费查题接口

公众号免费查题接口 本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 查题校园题库:查题校园题库后台(点击…

G1D19-DPCS KEAttacKG复现

今天先来看DP 一、DP 1044初稿完成啦~~ 创作与表达的过程总是令人心情愉悦! 内容很多,所以效率还算可以啦~但是如果能把工作流程定义地更加清楚的话,效率应该还可以再高一点!!! 二、CS KE 我发现自己网…

Layer2之争:短期看Optimism 长期看zkSync?

今天来说说 Layer2 的 OP 与 ZK 之争问题 短期 OP&#xff0c;长期 ZK&#xff1f; 这句话因为 V 神说过&#xff0c;所以被很多人认为是「金科玉律」&#xff0c;然而实际情况要复杂的多。 常见的那类比较网上已经说烂 - 即 OP 基于博弈 < ZK 基于数学 &#xff1b;O…

[CISCN2019 总决赛 Day2 Web1]Easyweb

扫目录能扫到一个robots.txt 在页面源代码发现 访问image.php.bak拿到源码 <&#xfeff;?php include "config.php";$idisset($_GET["id"])?$_GET["id"]:"1"; $pathisset($_GET["path"])?$_GET["path"]:&…

Plant Communications|高质量的基因组组装和泛基因组研究促进了绿豆的基因发现及其改进

TITLE&#xff1a;High-quality genome assembly and pan-genome studies facilitate genetic discovery in mungbean and its improvement 译名&#xff1a;高质量的基因组组装和泛基因组研究促进了绿豆的基因发现及其改进 期刊&#xff1a;Plant Communications 日期&#xf…

单卡完美复现pan++论文代码结果

源代码 1、根据源代码github地址下载代码&#xff0c;上传到服务器&#xff0c;使用服务器为3090显卡&#xff0c;cuda11.4 2、所需要的包的版本如下&#xff1a; Package Version -------------------------------- ------------------- absl-py …

【附源码】计算机毕业设计JAVA学生信息管理系统2021

【附源码】计算机毕业设计JAVA学生信息管理系统2021 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JAVA…

solvePnP的使用及物理意义

1 PnP问题概述 PnP问题&#xff1a;Perspective-n-Point问题。 参考下图&#xff0c; 给定n个3D空间参考点&#xff0c;以及各点在相机图像上对应的成像点&#xff0c;求参考点所在坐标系与相机的空间关系。 即&#xff1a; 已知条件1&#xff1a;给定匹配点对&#xff1a;世…

LeetCode | 391.完美矩形

给你一个数组 rectangles &#xff0c;其中 rectangles[i] [xi, yi, ai, bi] 表示一个坐标轴平行的矩形。这个矩形的左下顶点是 (xi, yi) &#xff0c;右上顶点是 (ai, bi) 。 如果所有矩形一起精确覆盖了某个矩形区域&#xff0c;则返回 true &#xff1b;否则&#xff0c;返…

基于Matlab的合成孔径雷达模拟陆地场景(附源码)

目录 一、生成模拟地形 二、指定搜救系统和场景 三、定义地表反射率 四、配置雷达收发器 4.1 生成数据多维数据集 4.2 可视化 SAR 数据 五、总结 六、程序 合成孔径雷达&#xff08;SAR&#xff09;系统使用平台运动来模拟更长的孔径&#xff0c;以提高跨距离分辨率。S…