音视频开发实战

📺 音视频开发实战:从播放器到连麦

一本让你从 C++ 开发者成长为音视频工程师的实战教程
目标平台:Linux / macOS(仅 POSIX API,不支持 Windows)

License: MIT C++14 FFmpeg


🚀 快速开始

git clone https://github.com/chapin666/live-system-book.git
cd live-system-book/chapter-02
mkdir build && cd build && cmake .. && make -j4

ffmpeg -f lavfi -i testsrc=duration=10:size=640x480:rate=30 -pix_fmt yuv420p test.mp4
./player test.mp4

环境准备brew install ffmpeg sdl2 cmake (macOS) 或 apt-get install ffmpeg libavformat-dev libsdl2-dev cmake (Ubuntu)


📖 本书介绍

渐进式案例:「小直播」从 100 行代码逐步成长为生产级系统

单章产出:每章结束都有可运行的代码,不是纯理论

工业级标准:RAII、智能指针、详细错误处理、内置统计

全书完结:31章理论 + 11个实战项目 + 60+代码示例


📊 内容概览

Part 1:播放器基础 ✅ 已完成

章节 内容 简介
Ch1 视频基础 视频压缩原理、YUV颜色空间、FFmpeg核心数据结构
Ch2 第一个播放器 150行代码实现完整播放器,理解解封装→解码→渲染流程
Ch3 Pipeline 工程化 接口解耦、RAII资源管理、模块化架构设计
P1 完整本地播放器 整合Ch1-3,实现播放控制、FPS显示、进度显示
Ch4 为什么卡顿? 性能分析方法、帧率预算、单线程瓶颈识别
Ch5 C++11 多线程 thread/mutex/条件变量、线程安全队列实现
Ch6 异步多线程播放器 解码与渲染分离、双缓冲队列、流畅播放原理
P2 网络点播播放器 整合Ch4-6,实现HTTP播放、网络缓冲、断线重连
Ch7 网络播放基础 HTTP/HTTPS流播放、环形缓冲、下载策略
Ch8 直播 vs 点播 RTMP协议、直播拉流、追帧策略、延迟优化
P3 直播观众端 整合Ch7-8,实现RTMP播放器、弱网对抗
Ch9 硬件解码优化 VideoToolbox/VAAPI/NVDEC、4K播放、功耗优化
Ch10 音视频采集 摄像头/麦克风采集、跨平台设备访问
Ch11 音频 3A 处理 回声消除(AEC)、降噪(ANS)、自动增益(AGC)
Ch12 编码与推流 H.264编码原理、x264使用、RTMP推流实现

Part 2:主播端进阶 ✅ 已完成

章节 内容 简介
Ch13 视频编码进阶 H.265/AV1编码、SVC可伸缩编码、码率控制策略
Ch14 高级采集技术 屏幕/窗口采集、多摄像头、画中画合成
P4 采集与预览工具 整合Ch10-14,实现专业级采集预览工具
Ch15 音频编码 AAC/Opus编码、音频质量优化
Ch16 美颜与滤镜 FFmpeg滤镜链、GPU图像处理、磨皮美白
P5 完整主播端 可开播的完整主播工具(采集→美颜→编码→推流)

Part 3:实时连麦 ✅ 已完成

章节 内容 简介
Ch17 Socket网络编程 ⭐ 新增 Socket API、UDP编程、字节序、数据序列化
Ch18 UDP与实时传输 RTP/RTCP协议、JitterBuffer、拥塞控制基础
Ch19 NAT穿透与P2P STUN/TURN/ICE协议、点对点连接建立
P6 P2P通话工具 UDP/RTP/NAT穿透,双人音视频通话
Ch20 WebRTC标准 DTLS/SRTP加密、DataChannel、信令协议设计
Ch21 WebRTC Native开发 libwebrtc使用、音视频轨道管理、SDP协商
P7 WebRTC连麦客户端 1v1实时连麦,信令交互完整实现
Ch22 SFU转发服务器 选择性转发、Simulcast、GCC拥塞控制
Ch23 多人房间管理 多路视频渲染、音量检测、布局管理
P8 多人会议系统 SFU转发,10人在线,多路渲染

Part 4:服务端架构 ✅ 已完成

章节 内容 简介
Ch24 MCU混音混画 音频混音算法、视频混画布局、GPU加速
Ch25 录制与回放 HLS/DASH协议、服务端录制、时移回放
P9 录制回放系统 MCU录制、HLS切片、HTTP回放服务
Ch26 最新协议探索 WebTransport、WHIP/WHEP、SRT/RIST
P10 完整服务端 SFU/MCU/信令三合一服务端

Part 5:生产部署 ✅ 已完成

章节 内容 简介
Ch27 质量监控体系 Prometheus/Grafana、QoS指标、MOS评分
Ch28 安全防护 Token认证、内容审核、防重放攻击
Ch29 性能调优 零拷贝、内存池、无锁队列、BBR拥塞控制
Ch30 Docker容器化 多阶段构建、镜像优化、Compose编排
Ch31 Kubernetes部署 HPA自动扩缩容、灰度发布、服务网格
P11 生产级部署 Docker/K8s完整运维体系

🎯 学习路径

┌─────────────────────────────────────────────────────────────────┐
│ Part 1: 播放器基础 (2-3个月) ✅ 已完成                          │
│ Ch1-3 → P1 → Ch4-6 → P2 → Ch7-9 → P3 → Ch10-12                │
│ 成果: 完整播放器 + 采集编码推流基础                             │
└─────────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────────┐
│ Part 2: 主播端进阶 (1.5-2个月) ✅ 已完成                        │
│ Ch13-14 → P4 → Ch15-16 → P5                                    │
│ 成果: 专业主播工具(采集→美颜→编码→推流)                      │
└─────────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────────┐
│ Part 3: 实时连麦 (2-3个月) ✅ 已完成                            │
│ Ch17-18 → P6 → Ch19-20 → P7 → Ch21-22 → P8                     │
│ 成果: WebRTC多人会议系统                                        │
└─────────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────────┐
│ Part 4: 服务端架构 (1.5-2个月) ✅ 已完成                        │
│ Ch23-24 → P9 → Ch25 → P10                                      │
│ 成果: 生产级服务端(SFU/MCU/录制)                              │
└─────────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────────┐
│ Part 5: 生产部署 (0.5-1个月) ✅ 已完成                          │
│ Ch26-28 → Ch29-30 → P11                                        │
│ 成果: Docker/K8s完整运维体系                                    │
└─────────────────────────────────────────────────────────────────┘

预计总时间:8-11 个月


📁 代码统计

类别 数量 说明
章节代码 60+ Ch1-Ch30 每章配套示例
项目代码 11个 P1-P11 完整可运行项目
头文件 21个 接口定义、类声明
源文件 40+ 具体实现
配置文件 10+ Docker/K8s/CMake
图表 100+ Mermaid/SVG 架构图

🗺️ 完整大纲

📄 OUTLINE.md — 查看全部 30 章详细规划


💡 核心概念速查

概念 一句话解释 类比
Pipeline 数据像水一样流动 工厂流水线
PTS 视频帧的”闹钟” 告诉系统该何时显示
YUV 亮度与颜色分开存 黑白电视 + 调色板
SFU 选择性转发 快递分拣中心
MCU 混音混画 视频编辑合成
ICE NAT穿透框架 打洞专家
WebRTC 浏览器实时通信标准 视频通话SDK

🛠️ 技术栈


📄 许可证

MIT License — 可自由用于学习或商业项目

🌟 如果对你有帮助,请点个 Star! !**