OBS_Classic经典版框架
2024-09-03 09:06:47
一,简介
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。
最新文章
- php实现设计模式之 工厂方法模式
- [HNOI2008],[bzoj1008] 越狱(dp+组合数学)
- [BZOJ1163][BZOJ1339][Baltic2008]Mafia
- PHP包含文件函数include、include_once、require、require_once区别总结
- bzoj 1833 [ZJOI2010]count 数字计数(数位DP)
- 虚拟机之仅主机模式(HostOnly)链接外网设置
- 【转】java 解析 plist文件
- 微信JS-SDK实际分享功能
- BZOJ 2423 最长公共子序列
- php经典面试题
- dij算法为什么不能处理负权,以及dij算法变种
- 查看SQLServer 代理作业的历史信息
- Dynamics CRM2016 Web API获取实体元数据Picklist属性的Text&;Value
- cf351B Jeff and Furik (树状数组)
- dos2unix详解
- SQL中Between查询日期时需要注意的地方
- 11: Nginx安装lua支持
- 【Java入门提高篇】Day19 Java容器类详解(二)Map接口
- codevs 5929 亲戚
- Win10 PLSQL 登录后,提示数据库字符集(AL32UTF8)和客户端字符集(ZHS16GBK)不一致
热门文章
- Public Key Retrieval is not allowed
- JFinal获取多个model
- badge徽章、挂件模版
- 一次m2eclipse的安装大坑经历之http://m2eclipse.sonatype.org/sites/m2e
- OpenGL 编程指南 (2)
- ansible笔记(13):变量(二)
- Wannafly Camp 2020 Day 2C 纳新一百的石子游戏
- altair package and altair_viewer
- C++ windows线程操作(转)
- Python入门2 —— 变量