跟着 OBS 学音视频

# 跟着 OBS 学音视频

一套面向零基础初学者的音视频入门课程,以开源项目 OBS Studio (opens new window) 的真实源码为活教材。 不需要任何专业音视频背景,我们从「一张图片、一段声音」讲起,每一个概念都带你回到 OBS 的真实代码里印证。

# 这门课为谁而写

  • 想入门音视频,却被一堆术语(YUV、码率、I 帧、RTMP……)劝退的开发者
  • 会一点 C / C++,想看懂一个工业级音视频项目是怎么搭起来的人
  • 用过 OBS,好奇「点一下『开始直播』,屏幕上的画面到底经历了什么」的人

# 一条主线

整门课只围绕一句话展开:

一帧画面 / 一段声音,是如何从「采集 → 合成 → 编码 → 封装 → 推流 / 录制」走完整条流水线的。

核心流水线

# 每一课的结构

每课固定三步走,概念不悬空、源码不照搬、学完能验证:

三段式结构

# 课程路线图

课程路线图


# 目录

# 模块 0 · 开始之前

建立全局地图,把环境跑起来,消除「源码这么大从哪看」的恐惧。

# 模块 1 · 音视频的「原材料」

在碰 OBS 复杂代码前,先建立对像素和声波的物理直觉。

# 模块 2 · OBS 的世界观(核心架构)

理解 OBS 用哪几个核心概念把整个系统组织起来。这是读懂后续一切的钥匙。

# 模块 3 · 画面是怎么来的(视频链路)

跟着一帧画面,走完采集 → GPU 处理 → 合成 → 输出的全过程。

# 模块 4 · 声音是怎么处理的(音频链路)

理解音频这条与视频并行、却必须严丝合缝对齐的流水线。

# 模块 5 · 压缩:编码

把「为什么必须压缩」讲透,并认识编码器。

# 模块 6 · 打包与送出(输出链路)

编码后的数据如何被装进文件或发往直播服务器。

# 模块 7 · 把它们串起来(前端与全链路)

从界面视角回看全局,然后完整走一遍数据旅程。

# 模块 8 · 动手与进阶

从「读懂」走向「能改」,并指明继续深入的方向。


# 约定

  • 源码引用统一写作 路径:行号 的形式(如 libobs/obs.h:57),方便对照阅读。
  • 本课程基于的源码版本:libobs API v32.0.4(见 libobs/obs-config.h)。

⚠️ 关于向上游贡献:OBS 官方在 CONTRIBUTING.rst 中明确不接受主要由 AI 生成的代码提交。本课程把源码当作学习材料来阅读和讲解,与「提交 AI 生成的 PR」是两回事 —— 请勿将课程里的演示代码不加理解地提交到上游。

上次更新: 2026/07/14, 21:26:15

社区交流

讨论与留言

前往 GitHub Issues →

本留言区仅对应当前文章,欢迎补充观点、提出问题或帮助修正文中疏漏。 留言由 GitHub/Gitalk 提供,需要使用 GitHub 登录。

最近更新
第 1 课:专栏导论与安全边界
07-01
第 3 课:安装编译与调试环境
07-01
第 4 课:第三方库下载、编译与依赖管理
07-01
更多文章>