🎬 FFmpeg入门详解——命令行与音视频特效原理及应用
照着《FFmpeg入门详解——命令行与音视频特效原理及应用》(梅会东 编著,清华大学出版社)做的自学笔记 —— 「FFmpeg 音视频流媒体系列」三部曲**第三部**:音视频原理及应用讲**画面怎么压成码流**,流媒体直播原理及应用讲**码流怎么送到观众眼前**,这一本讲**手里这条命令到底怎么敲**。全书 12 章 206 篇,目前写到第 1~5 章(95 篇):第 1 章把 FFmpeg 的家底摆清楚(七个库、三个外壳、开源许可证的传染链);第 2 章命令行初体验(转封装与重编码差在哪、ffprobe 四层信息、Y4M 手写视频、PAL/NTSC 制式);第 3 章 32 篇把三大工具的选项掰开揉碎(-ss 放前放后是两种行为、-map 三段语法、-h 查到的比博客准);第 4 章转封装(MP4 的四个盒子、h264_mp4toannexb 只换记号不重编码、faststart 只挪 moov);第 5 章转码(YUV/RGB/PCM 裸数据、-c copy 省掉三步、GOP 与 libx264 选项、GPU 硬件加速)。本课是命令行课:沙箱里没有 ffmpeg.exe,但有 PyAV 绑定的同一套 libav*——凡是「库能做到的事」都真跑(造素材、编码、滤镜、转封装、抽帧、量字节);只有 exe 才有的部分用【📋 实操路径】单列完整命令与预期输出。教材示例基于 FFmpeg 4.x/5.0 与 Windows 10,凡与现状不同处各篇用【⚠️ 2026 现状】单列。大白话、不跳步骤、必带生活比喻、常见误区、可折叠自测题。
前置课程:FFmpeg入门详解——音视频原理及应用(第一部)、流媒体直播原理及应用(第二部)、Linux是怎样工作的(PATH 与进程环境那点事)。
内容来自我的 Obsidian 自学笔记 · 全书 12 章 206 篇 · 已完成第 1~5 章 95 篇 · 更新中 🚧
第一章 FFmpeg入门简介
FFmpeg 官网介绍
官网四个入口各管一类问题;七个库七个版本…
FFmpeg 耻辱柱
13 个外挂组件里 3 个是 GPL;d…
Libav 政变
av_ 前缀的来历;写 h264 要编码…
开源许可协议简介
三种协议一条传染链;进程隔离是闭源用 G…
在 Windows 上安装 FFmpeg
三步装完;PATH 是启动那一刻的快照…
在 Linux 上安装 FFmpeg
apt/静态包/源码三条路的取舍;apt…
在 macOS 上安装 FFmpeg
brew/静态包/源码;三个系统装完的验…
工具
三个外壳一个内核;能读 368 个格式…
SDK
七个库一层叠一层;三个能数出条目,四个数…
源码
源码树一个库一个目录;configure…
FFmpeg 常用功能
八类功能一张图;本机能做转封装与抽帧,做…
FFmpeg 的处理流程
五阶段两种数据;731→34560→72…
FFmpeg 的关键结构体
四个结构体撑起流水线;容器 1/1000…
第二章 FFmpeg命令行初体验
FFmpeg 命令行简介
参数位置决定含义;同一个 -ss 两种写…
音视频格式转换
转封装与重编码差一个量级;-c copy…
视频缩略图
五个时刻五张 PNG 几乎一样大;大小由…
图片拼接成视频
帧率必须自己说;序列帧走磁盘多付四笔账…
ffplay 视频播放
解码只占时长一个零头;播放器大部分时间在…
ffprobe 获取视频信息
四层信息四个开关;-print_form…
Y4M 格式简介
二十行手写一个合法视频;64856 字节…
Y4M 格式规范
头里六个字段;C420/422/444…
制式
三种制式三套参数;场频÷2 能不能整除…
PAL 制式
625 行扣掉消隐剩 576;720×5…
NTSC 制式
29.97 的精确值是 30000/10…
第三章 FFmpeg三大常用工具及应用选项详解
ffmpeg 工具简介
三个外壳一个内核;能读 368 个格式…
ffplay 工具简介
比 ffmpeg 多要三样东西:SDL2…
ffplay 常用参数
九个最常用参数;-vn 只听不看,-an…
ffplay 高级参数
同步、丢帧、缓冲三组;丢帧只在追不上时才…
ffplay 的数据可视化分析应用
四个可视化滤镜;手写 440 Hz 音…
VLC 作为 RTSP 流媒体服务器
VLC 三个角色;554 要 root…
ffprobe 工具简介
三工具边界在哪;六个 show_* 各回…
show_packets
前 8 个包的 pts/dts/字节;首…
show_format
format 段只描述容器;15370…
show_frames
帧段独有 pict_type;素材太短时…
show_streams
八项字段一眼看懂;nb_frames 在…
print_format
五种输出格式;json 会多出几百字节的…
select_streams
三种选法;v:1 在单视频流上什么都选不…
通用选项
七个不掉画质的选项;-nostdin 防…
视频选项
四组参数;yuv420p 宽高必须偶数…
音频选项
五个数决定一路音频;只有码率直接决定大小…
字幕选项
字幕分内外挂两类;手写 159 字节 S…
高级选项
六个改范围的参数;-ss 放前面是快进…
map 详解
三段语法;不写 -map 只从第一个输入…
ffmpeg -h 详解
五级帮助;-h encoder= 打的是…
-formats:支持的文件格式
414 个格式分三类;d 与 e 两个口…
-muxers:支持的封装器格式
182 个能写;一半存文件、一半送出去…
-demuxers:支持的解封装器格式
368 个能读,多出来的 186 个全是…
-devices:支持的设备
Windows 三个组件;有组件不等于有…
-encoders:支持的编码器格式
557 个里 211 个能编;libx2…
-decoders:支持的解码器格式
530 个能解,是编码器的 2.5 倍…
-protocols:支持的协议格式
三层独立可组合;「打开成功」什么都不能证…
-hwaccels:支持的硬件加速格式
五种互不兼容的方案;配置数 5 不等于可…
-layouts:支持的声道模式
5.1 是 6 个声道;名字拼错直接抛异…
-sample_fmts:支持的采样格式
命名只有位深加一个 p;AAC 只吃 f…
-colors:支持的颜色名称
green 是 0x008000 深绿…
-pix_fmts:支持的像素格式
rgb24 是 yuv420p 的两倍…
第四章 FFmpeg命令行实现音视频转封装
视频容器及封装与解封装简介
一个文件四层账;92% 是包,剩下 8%…
从 MP4 文件中提取音频流和视频流
改包指向就分离;两个文件加起来只有原文件…
h264_mp4toannexb
00 00 02 A0 变 00 00…
根据音频流和视频流合成 MP4 文件
装回一个盒子,字节与原来完全相同;三条规…
将多个 MP4 文件合并成一个 MP4 文件
不改偏移直接写,MP4 封装器当场拒绝(…
MP4 转换为 FLV
换盒子不换内容;FLV 文件头只有 9…
MP4 转换为 AVI
音频过、视频拒:不是不支持 H.264…
其他格式转换
五个盒子四个成功;webm 点名拒绝 l…
AVI/FLV/TS 格式简介
TS 340 包全是 0x47 开头;没…
MP4 格式简介
四个顶层盒子;mdat 占 92%,mo…
faststart 参数介绍
只把 moov 挪到最前,字节 3798…
第五章 FFmpeg命令行实现音视频转码
视频编解码简介
重复换引用、细节扔掉;CRF 是质量目标…
音频编解码简介
赌听觉掩蔽;目标码率是上限,用不完是正常…
音视频转码简介
转封装搬包、转码解压重编,代价差一个数量…
利用 FFmpeg 提取视频的 YUV 像素数据
字节完全由宽×高×帧数决定;这种文件里没…
YUV444/YUV422/YUV420
420 是四像素共用一组色度;砍的只有色…
利用 FFmpeg 提取视频的 RGB 像素数据
rgb24 是 yuv420p 的两倍…
RGB16/RGB24/RGB32
数字是每像素位数;位数少的代价是色带不是…
利用 FFmpeg 提取音频的 PCM
每秒 44100 次、每次两个整数;35…
PCM 数据与 WAV 格式
WAV 就是 PCM 前面加 44 字节…
PCM 编码为 AAC
一包永远 1024 点;换封装字节差 5…
AAC 转码为 MP3
字节几乎一样、包数差九个;有损转有损能不…
AAC 转码为 AC-3
恒定码率贴着目标走;只认三档采样率,22…
YUV 编码为 H.264
裸流帧全被标成 I 帧;不清体积大三倍且…
MP4 格式转码为 FLV 格式
重编码只剩源的一成三;80×45 因奇数…
MP4 格式转码为 AVI 格式
同编码写 AVI 比 MP4 大一倍;比…
MP4 格式转码为 TS 格式
188 字节定长包、开头必是 0x47…
其他格式之间互转
mkv 什么都能装,webm 只认自家编…
单声道与立体声互转
字节正好一半、点数不变;下混就是取平均且…
采样率转换
降采样省空间;升回来补的是零,均方根 0…
采样格式转换及音频重采样
s16 换 s32 只是换写法;plan…
控制视频的帧率
丢帧、补帧、只改时间轴三条路;第三条的结…
控制视频的码率及分辨率
目标 400 kbps 只花掉 78;定…
控制视频的 GOP
GOP 10 实测间隔 0.24 秒;x…
视频 GOP 简介
I 6/P 19/B 25;开放 GOP…
FFmpeg 中 libx264 的选项
ultrafast 字节是 medium…
x264.exe 中的选项名与选项值
两套名字落到同一组参数;码率单位差一千倍
libx265 的常用编码选项及应用案例
x265 字节是 x264 的 127%…
FFmpeg 的 GPU 硬件加速原理及应用案例
认识 16 个硬件编码器名;qsv 只吃…