OBS 源码解析一

OBS 源码解析一

obs整体工程

  • obs
    obs程序界面,程序入口,基于qt
  • libobs
    obs的核心集成封装,所有第三方库的集成封装
  • blake2
    hash算法,据说比sha-1快,安全
  • coreaudio-encoder
    音频采集,对coreaudio调用封装
  • ffmpeg-mux
    对ffmpeg封装,解复用
  • file-updater
    自动升级
  • frontend-tools
  • get-graphics-offsets
    注入库时,通过虚表偏移获取d3d8,d3d9,dxgi的函数,从而实现API重定向,即用自己的函数替换原本的函数。
    当然还需依附进程间通信,在win-capture中,使用pipe实现。
    两种显卡渲染的实现,使用gpu,解放cpu压力,同时提高渲染效率与质量。 使用着色器语言渲染(定点和片着色器,分别控制位置矢量和色值,感兴趣的同学可以详细了解一下)。gpu映射
  • glad
    opengl封装
  • graphics-hook
    hook显卡api,用于抓取软件窗口
  • image-source
    图片资源,动态图,多张图幻灯片放映
  • inject-helper
    将graphices-hook注入到其他进程。
  • ipc-util
    进程间通信,主要封装了pipe管道的实现,用于在hook 游戏进程时,传递原始画面数据,所以用到。
  • jansson
    json 处理
  • libobs-d3d11
  • libobs-opengl
  • lzma
  • media-playback
  • obs-ffmpeg
  • obs-filters
    图像滤镜,亮度,色度,饱和度,抠像
  • obs-frontend-api
  • obs-outputs
    输出模块,录制flv,rtmp调用
  • obs-qsv11
    intel 硬件编码
  • obs-text
    GDI+ 渲染文字
  • obs-transitions
    场景之间切换过度效果
  • obs-vst
  • obs-x264
    x264 编码器
  • rtmp-services
    rtmp 推流
  • text-freetype2
    开源字体引擎,支持多种格式,比GDI+高效
  • win32-pthreads
  • win-capture
    窗口,显示器,游戏(涉及进程间通信)捕捉
  • win-decklink
    针对decklink采集卡的抓取
  • win-dshow
    摄像头采集
  • win-mf
  • win-wasapi
    针对声音输入(麦克风)输出(扬声器)设备的抓取

你可能感兴趣的:(OBS)