🎬 FFmpeg入门详解——流媒体直播原理及应用 · 目录

🎬 FFmpeg入门详解——流媒体直播原理及应用

照着《FFmpeg入门详解——流媒体直播原理及应用》(梅会东 编著,清华大学出版社)做的自学笔记 —— 「FFmpeg 音视频流媒体系列」三部曲**第二部**。姊妹篇《音视频原理及应用》讲的是「画面怎么压成码流」,这一册讲的是「压好的码流怎么送到观众眼前」——一本管编码,一本管传输与分发,两本合起来才是完整的 FFmpeg 技术栈。全书 14 章 146 篇:第 1 章铺底(流媒体为什么能边下边播、直播延迟花在哪);第 2~6 章逐个拆协议——RTSP 遥控器、RTP/RTCP 送货车、RTMP 块流、HLS 切片、HTTP-FLV,TS 的 188 字节包和 FLV 的 Tag 里装了什么全部真解析;第 7 章流媒体开源库;第 8~12 章用五个开源服务器真搭直播平台(Live555、EasyDarwin、Nginx-rtmp、SRS、ZLMediaKit);第 13 章 WebRTC 网页直播;第 14 章综合案例。这本是协议分析课:沙箱里装了 PyAV,真编码、真封装 TS/FLV、真切 HLS、真解析包结构都能实测;需要真服务器的部分用【📋 实操路径】单列完整命令与验证方法。教材实操基于 Ubuntu 18/CentOS 7 与 2019 年前后的软件版本,凡与现状不同处各篇用【⚠️ 2026 现状】单列(Flash 已停用、SRS 6.0 配置差异、ZLMediaKit 改 CMake 等)。大白话、不跳步骤、必带生活比喻、常见误区、可折叠自测题。
前置课程:FFmpeg入门详解——音视频原理及应用(同一系列第一部)、计算机网络、服务器工作原理、Web技术原理。

内容来自我的 Obsidian 自学笔记 · 全 14 章 146 篇完结 ✅

第一章 流媒体与直播基础理论

第二章 RTSP流媒体协议

第三章 RTP与RTCP流媒体协议

3.1.1

RTP格式

固定头 12 字节九字段;序号按包加、时…

⭐⭐⭐阅读全文 →
3.1.2

RTP封装H.264

720p 真编 405 个 NAL,32…

⭐⭐⭐阅读全文 →
3.1.3

RTP的会话过程

一路流从 SETUP 到 BYE 的四段…

⭐⭐阅读全文 →
3.1.4

RTP的抓包分析

三层头共 54 字节,小包开销五成以上…

⭐⭐阅读全文 →
3.2.1

RTCP的5种分组类型

SR/RR/SDES/BYE/APP 五…

⭐⭐阅读全文 →
3.2.2

RTCP包结构

SR 里 NTP 与 RTP 时间戳配对…

⭐⭐⭐阅读全文 →
3.2.3

RTCP的注意事项

总带宽 5%,其中 25% 给发送方、7…

⭐⭐阅读全文 →
3.2.4

RTCP的抓包分析

复合包 RR+SDES 48 字节;遍历…

⭐⭐阅读全文 →
3.3

RTP/RTCP与RTSP的关系

遥控器/送货车/回执三分工;554 固定…

⭐⭐⭐阅读全文 →
3.4.1

Windows10+VS2015编译JRTPLIB

两包四步,先编 jthread 再编 j…

⭐⭐阅读全文 →
3.4.2

Ubuntu18编译JRTPLIB

三个同名 .so 各管一头;链接用无版本…

⭐⭐阅读全文 →
3.4.3

使用VS2015搭建JRTPLIB开发环境并收发包案例

五步骨架四步是配置;三个必错点都不报错…

⭐⭐⭐阅读全文 →
3.4.4

RTP与H.264的相关结构体

字段 12 字节 sizeof 却是 1…

⭐⭐⭐阅读全文 →
3.4.5

使用JRTPLIB发送H.264码流

245 个 NAL 变 261 包,重组…

⭐⭐⭐阅读全文 →
3.5.1

RTP单扩展头

X 位一置就多 4+N 字节;长度单位是…

⭐⭐⭐阅读全文 →
3.5.2

RTP多扩展头

区别只在 profile:单向 4 位…

⭐⭐⭐阅读全文 →

第四章 RTMP流媒体协议

4.1

RTMP简介

1935 单连接多路复用;延迟大头在等关…

⭐⭐阅读全文 →
4.2.1

RTMP握手

六个包 3073 字节;C2 与 S2…

⭐⭐阅读全文 →
4.2.2

RTMP建立连接

connect 用 AMF0,87 字节…

⭐⭐⭐阅读全文 →
4.2.3

RTMP建立流

连接管通不通、流管搬什么;streamI…

⭐⭐阅读全文 →
4.2.4

RTMP播放

onStatus 事务号恒为 0,配不上…

⭐阅读全文 →
4.2.5

RTMP相关名词解释

连接/流/消息/块四层;csid 是车道…

⭐⭐阅读全文 →
4.3.1

直播推流

只有 8/9/18 三种消息;RTMP…

⭐⭐阅读全文 →
4.3.2

直播拉流

首屏大头是等关键帧;GOP 压到 1 秒…

⭐⭐阅读全文 →
4.4.1

RTMP块流

调大块省的不是带宽而是块数:20 KB…

⭐⭐⭐阅读全文 →
4.4.2

消息块格式

基本头+消息头+扩展+载荷;流 ID 是…

⭐⭐⭐阅读全文 →
4.4.3

块基本头

1/2/3 字节三种;64 加第二字节…

⭐⭐阅读全文 →
4.4.4

块消息头

11/7/3/0 四种格式;六块连发省…

⭐⭐⭐阅读全文 →
4.4.5

扩展时间戳

3 字节只有 4.66 小时;填满 1…

⭐⭐阅读全文 →
4.4.6

消息分块流程解析

同 csid 保序、跨 csid 任意交…

⭐⭐⭐阅读全文 →
4.4.7

协议控制消息

五种,都走 csid 2 与流 0;Se…

⭐⭐阅读全文 →
4.4.8

用户控制消息

外层类型 4 加内层事件号;Stream…

⭐⭐阅读全文 →
4.4.9

其他消息类型

负载就是 FLV tag 数据体;聚合消…

⭐阅读全文 →

第五章 HLS流媒体协议

5.1.1

HLS 的索引文件的嵌套

主列表 150 字节、媒体列表写切片;主…

⭐⭐阅读全文 →
5.1.2

HLS 服务器端和客户端工作流程

取列表 157 字节 + 3 个切片 1…

⭐⭐阅读全文 →
5.1.3

HLS 优势及劣势

延迟 = 切片时长 ×(回溯 + 缓冲)…

⭐⭐⭐阅读全文 →
5.1.4

HLS 主要的应用场景

四步起播 280 毫秒;13 秒的 HL…

⭐⭐阅读全文 →
5.2.1

m3u8 简介

三个切片总时长 12.0 秒;TARGE…

⭐⭐阅读全文 →
5.2.2

HLS 播放模式

窗口 3 个喂 7 片:序号从 0 滑到…

⭐⭐阅读全文 →
5.2.3

TS 文件

9588 = 51 × 188 余 0…

⭐⭐⭐阅读全文 →
5.3

m3u8 格式讲解

标签分五类、常用不到十个;DISCONT…

⭐⭐⭐阅读全文 →
5.4.1

ES、PES、PS、TS

四层开销 0/14/4 字节;TS 头占…

⭐⭐⭐阅读全文 →
5.4.2

PS/TS 编码基本流程

125 字节 NAL → 140 字节…

⭐⭐⭐阅读全文 →
5.4.3

PS/TS 码流小结

1 MB 数据 TS 头 22 KB、P…

⭐⭐阅读全文 →
5.5.1

TS 包格式

51 个包 PUSI 45 个;连续计数…

⭐⭐⭐阅读全文 →
5.5.2

TS 码流分析工具

25 包 25 帧、2 个关键帧;最大/…

⭐⭐阅读全文 →
5.5.3

TS 码流结构分析

PAT 16 字节给出 PMT 的 PI…

⭐⭐⭐阅读全文 →
5.5.4

PAT 及 PMT 表格式

CRC32 用 MPEG-2 算法 0x…

⭐⭐⭐阅读全文 →
5.6.1

PS 码流结构

pack 头 20 字节带 SCR;不是…

⭐⭐阅读全文 →
5.6.2

PS 码流的解析流程

447 字节走成 14+209+129+…

⭐⭐阅读全文 →
5.7

TS 格式与 m3u8 切片

真切 2 片共 17296 字节,各自整…

⭐⭐⭐阅读全文 →

第六章 HTTP-FLV流媒体协议

第七章 流媒体开源库简介

7.1.1

FFmpeg 的模块与命令行工具

FFmpeg 不是「一个程序」,而是一组…

⭐⭐阅读全文 →
7.1.2

FFmpeg 命令行

难点不在参数多而在参数放的位置;同一个…

⭐⭐⭐阅读全文 →
7.1.3

FFmpeg 开发包

开发包就是「头文件 + 库文件」,让你不…

⭐⭐阅读全文 →
7.2

Live555

只做一件事:用单线程事件循环跑 RTSP…

⭐⭐阅读全文 →
7.3.1

VLC 播放器

播放链路只有五段:取字节、拆容器、解编码…

⭐⭐阅读全文 →
7.3.2

VLC 的功能列表

功能看着很多,归类只有四组;真正决定能不…

⭐⭐阅读全文 →
7.3.3

VLC 播放网络串流

播网络流只要一个地址,或用一份 m3u…

⭐阅读全文 →
7.4.1

EasyDarwin 开源项目

骨架来自苹果的 Darwin Strea…

⭐⭐阅读全文 →
7.4.2

EasyDarwin 商业项目

商业版多出来的不是协议,而是运维能力:集…

⭐⭐阅读全文 →
7.4.3

EasyDarwin 云平台

成本拆成接入、转发、存储三层;存储是唯一…

⭐⭐阅读全文 →
7.5

SRS

国产开源流媒体服务器里用得最广的一个;核…

⭐⭐⭐阅读全文 →
7.6

ZLMediaKit

卖点是「一进多出」:一路流推上去,五种协…

⭐⭐⭐阅读全文 →
7.7.1

WebRTC 架构

分三层:应用层给 API、引擎层管音视频…

⭐⭐⭐阅读全文 →
7.7.2

视频分析

视频链路六段,延迟大头在抖动缓冲;帧大小…

⭐⭐⭐阅读全文 →
7.7.3

声频分析

音频一包 20 毫秒,是「头部开销」与「…

⭐⭐⭐阅读全文 →
7.7.4

浏览器支持

同一路流,不同浏览器能给的播放能力完全不…

⭐⭐阅读全文 →
7.7.5

组成部分

暴露给 JavaScript 的只有三个…

⭐⭐阅读全文 →
7.7.6

重要 API

一次握手六步:offer、setLoca…

⭐⭐⭐阅读全文 →

第八章 Live555搭建直播平台

第九章 EasyDarwin搭建直播平台

第十章 Nginx搭建直播平台

第十一章 SRS搭建直播平台

第十二章 ZLMediaKit搭建直播平台

第十三章 WebRTC网页直播

第十四章 FFmpeg直播应用综合案例分析