一,简介

OBS(open boardcast server),是一个用于直播的开源软件。

官方网站:https://obsproject.com/

代码托管地址:https://github.com/jp9000/OBS

git地址:https://github.com/jp9000/OBS.git

二,结构

项目文件结构如下图:

三,分析

最新的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。

地址:https://github.com/jp9000/obs-studio

最新文章

  1. 数组排序(java)
  2. Silverlight和WPF中DataContractJsonSerializer对时间的处理差异
  3. UVA&&POJ离散概率与数学期望入门练习[4]
  4. 你写的return null正确吗?
  5. C语言文法的理解
  6. Leetcode: Max Sum of Rectangle No Larger Than K
  7. (void*)0 的理解
  8. linux下安装mysql数据库与相关操作
  9. Python LOGGING使用方法
  10. mysql数据库常用语句
  11. 使用WeCloud消息推送接口发送消息NodeJs版
  12. [caffe]深度学习之图像分类模型AlexNet解读
  13. Android绘图监听接口OnPreDrawListener详解
  14. 一步一步学Vue (一)
  15. win7系统盘扩容后不识别修复方法
  16. tmux 后台训练
  17. Linux下图形数据库Neo4j单机安装
  18. SpringBoot之处理JSON数据举例
  19. oracle查看被锁的表和解锁
  20. WCF 添加服务引用 HTTP 请求已超过为 00:00:00 分配的超时。为此操作分配的时间可能是较长超时

热门文章

  1. Spring MVC防止数据重复提交(防止二次提交)
  2. xubuntu openocd nRF51822 download --- 2
  3. Quartz与Spring的整合使用
  4. linux 修改时间
  5. 安卓File类汇总
  6. 【Python3 爬虫】06_robots.txt查看网站爬取限制情况
  7. 【Java】Java_03第一个Java程序
  8. Python手势识别与控制
  9. Java 连接使用 Redis
  10. Sonatype Nexus