OBS (open boardcast server)结构分析
2024-10-21 05:05:48
一,简介
OBS(open boardcast server),是一个用于直播的开源软件。
二,结构
项目文件结构如下图:
三,分析
最新的OBS只能在vista以上操作系统中运行,显卡必须至少支持DX10。
OBS的编译需要visual studio 2013(C++11重写了部分代码),当然你也可以switch到老版本下进行编译,但新的特性或bug修正就无法启用了。
OBS包括五大组件,以及一些附加功能:
video source :
a,DShow的capture filter;
b,游戏画面,hook部分通过minihook实现,获得的surface分别通过D3D10共享在OBS主窗口上显示,以及通过共享内存发送到OBS进程中进行encode;
c,桌面窗口画面,通过GDI实现;
d,图片;
audio source:
a,麦克风及桌面声音,通过MMDevice获取;
b,blank,无声音;
video encoder:
a,x264;
b,nvidia cuda video encoder;
c,intel QSV video encode;
audio encoder:
a,MP3,通过lame库实现;
b,aac,通过libfaac库实现;
stream destination:
a,rtmp stream,通过librtmp实现;
b,file stream,可生成FLV/MP4的文件;
附加功能:
a,音频重采样,通过libsamplerate库实现;
b,音频去噪;
c,自动更新;
四,总结:
OBS逻辑上区分的很清楚,但是代码部分非常杂揉。因而作者正在写一个新的跨windows/linux/mac平台的C++11适配的project。
最新文章
- 数组排序(java)
- Silverlight和WPF中DataContractJsonSerializer对时间的处理差异
- UVA&;&;POJ离散概率与数学期望入门练习[4]
- 你写的return null正确吗?
- C语言文法的理解
- Leetcode: Max Sum of Rectangle No Larger Than K
- (void*)0 的理解
- linux下安装mysql数据库与相关操作
- Python LOGGING使用方法
- mysql数据库常用语句
- 使用WeCloud消息推送接口发送消息NodeJs版
- [caffe]深度学习之图像分类模型AlexNet解读
- Android绘图监听接口OnPreDrawListener详解
- 一步一步学Vue (一)
- win7系统盘扩容后不识别修复方法
- tmux 后台训练
- Linux下图形数据库Neo4j单机安装
- SpringBoot之处理JSON数据举例
- oracle查看被锁的表和解锁
- WCF 添加服务引用 HTTP 请求已超过为 00:00:00 分配的超时。为此操作分配的时间可能是较长超时