🎬 FFmpeg入门详解——SDK二次开发与直播美颜原理及应用
照着《FFmpeg入门详解——SDK二次开发与直播美颜原理及应用》(梅会东 编著,清华大学出版社)做的自学笔记 —— 「FFmpeg 音视频流媒体系列」第四部:音视频原理及应用讲**画面怎么压成码流**,流媒体直播原理及应用讲**码流怎么送到观众眼前**,命令行与音视频特效讲**手里这条命令怎么敲**,这一本把命令行换成 **C 语言 API**——不敲命令了,直接调 libav* 写代码:从编译 FFmpeg 源码搭开发环境开始,把「八大金刚」核心开发库(libavutil/libavformat/libavcodec/libavfilter/libswscale…)一个个讲透,后面还有直播美颜。全书规划 13 章 99 篇,全书 13 章 99 篇已全部写完:第 1 章 12 篇编译与环境(MinGW/MSYS2/pacman、MSVC 与 MinGW64 两套工具链真编译出 FFmpeg 5.0+Libx264+Libx265、Linux 下 GCC 编译、Qt 与 VS 开发环境);第 2 章 9 篇八大核心库总览(每个库管什么、依赖树、能数的三个量 557/414/468)。本课是 SDK 开发课:需要真编译环境的用【📋 实操路径】单列完整步骤与预期输出。大白话、不跳步骤、必带生活比喻、常见误区、可折叠自测题。
前置课程:FFmpeg入门详解——音视频原理及应用(第一部)、流媒体直播原理及应用(第二部)、命令行与音视频特效(第三部)。
内容来自我的 Obsidian 自学笔记 · 全书 13 章 99 篇已全部写完 · 全书完结 🎉
第一章 编译FFmpeg源码并搭建开发环境
FFmpeg 源码简介
七个库加三个程序;七个版本号各走各的;开…
MinGW 简介
MSVC/MinGW/Cygwin 三条…
安装 MSYS2
装完是三个 shell;编 FFmpeg…
更新 MSYS2
-Sy/-Su/-Syu 三段;1.0.…
Pacman 使用命令
-R/-Rs/-Rsc 三级连坐;删之前…
在 MSYS2 安装依赖项
六条命令落地十七个包;缺 pkg-con…
使用 MSVC 工具链来编译 FFmpeg 5.0+Libx264+Libx265
先编 x264、x265 再编它;.li…
使用 MinGW64 工具链来编译 FFmpeg 5.0+Libx264
与 MSVC 差三处;三个 gcc 运行…
Linux 平台下编译 FFmpeg 5.0 源码
apt 装 -dev 包;--prefi…
搭建 FFmpeg 的 Qt 开发环境
.pro 三行;三个坑:-l 前缀、-L…
搭建 FFmpeg 的 VS 开发环境
三处配置;LNK2019 三种来源,__…
Linux 下使用 GCC 编译 FFmpeg 的程序
二十行验三层;pkg-config 拼…
第二章 把控FFmpeg骨架:【八大金刚】核心开发库
FFmpeg 八大核心开发库
八库一底七柱;依赖树根在 libavut…
libavutil 库简介
内存、字典、日志、枚举;排错先开 VER…
libavformat 简介
414 个格式=容器+协议+设备;搬 A…
libavcodec 库简介
557 个名字;h264 只解、libx…
libpostproc 库简介
只修压缩伤;本机没编,活被内置滤波与滤镜…
libavdevice 库简介
设备就是格式;本机只有 dshow 与…
libavfilter 库简介
滤镜/链/图三层;本机缺 drawtex…
libswresample 库简介
采样率、planar/packed、声道…
libswscale 库简介
一个函数改尺寸与格式;不做色彩管理;缩小…
第三章 夯实FFmpeg基础:重要数据结构及API
初识 FFmpeg 的 API
API 按层分不按功能分;av_regi…
FFmpeg 的解码及播放流程
五步一条链;包与帧差 73 倍;一包一帧…
使用 FFmpeg 解封装并读取流信息的案例
六个数看家底;duration 是微秒…
使用 FFmpeg 进行解码的 10 个经典结构体
十个里七个完整、一个半个、两个变形;三个…
AVPacket 与 AVFrame
压缩的与解开的;pts 与 dts 因…
协议层的三大重要数据结构
缓冲、协议、连接三个都不导出;只能靠选项…
封装层的四大重要数据结构
输入输出合成一个;时间归流、参数归上下文…
编解码层的三大重要数据结构
模板与实例;解码侧读不到 gop_siz…
FFmpeg 的重要 API 函数
十二个按调用顺序排;AVERROR 与异…
Ubuntu 下编译并运行解封装案例
一条命令三个前提;本机三个全没有;能落地…
第四章 精通FFmpeg框架流程:击鼓传花之责任链设计模式
击鼓传花之责任链设计模式简介
单职责、串行、可中断、可拆装;一把梭 v…
FFmpeg 的框架原理及流程分析
七库按环排;libavutil 在链下…
FFmpeg 的解码流程分析
送一包不一定收一帧;EAGAIN 与 E…
FFmpeg 的编码流程分析
出包晚一步;四件事要先说清;gop_si…
FFmpeg 转码流程简介
链加两环;「处理」是特效唯一的入口;三个…
FFmpeg 的两种转码方式
转封装 vs 转码差近十倍;体积小不等于…
基于 RTP 传输的 FFmpeg 转码应用
只换末环;RTP 送数据、RTSP 下指…
FFmpeg 转码流程小结
三条路一张表;省环是设计、丢尾是 bug…
视频文件转码流程案例分析
四参数一次改;丢帧按网格重排 pts;立…
第五章 AVUtil通用工具层理论及案例实战
AVUtil 库及相关 API 简介
链下的地基;五个可数的量与两个数不出的…
AVLog 应用案例及剖析
八级每级差 8;三元组来源栏;没日志不等…
AVParseUtil 应用案例及剖析
靠起始码找边界;1221 字节切回 3…
AVDictionary 应用案例及剖析
dict 换掉整套内存管理;错键静默忽略…
AVOption 应用案例及剖析
109 通用加 48 专有;九条信息;负…
第六章 AVProtocol协议层理论及案例实战
协议层AVIO的流程及数据结构
解 5 帧只读 3 次;32768 是缓…
AVIO案例实战之打开本地文件
五种写法一个容器;能打开要 read、能…
AVIO案例实战之打开网络直播流
本机 HTTP 真跑;两条 Range…
内存IO模式之自定义AVIO案例实战
io_open 三参数;密文照样解;打开…
内存映射文件技术
挂页不抄页;只读映射写报 TypeErr…
第七章 AVFormat封装层理论及案例实战
视频封装格式简介
容器是箱子、编码是货物;四类容器;能读与…
使用FFmpeg处理音视频的封装与解封装
盒子按长度加类型套;mdat 占九成四…
封装层的重要API函数简介
七个 API 一条流水线;三个被藏进 a…
FFmpeg解封装案例实战
duration 是微秒;空包是结束标记…
FFmpeg封装格式之时基与时间刻度
三个刻度并存;秒数等于 pts 乘 ti…
FFmpeg解封装后直接存储AVPacket
裸流等于包合计;丢的是索引与音轨;省空间…
FFmpeg转封装案例实战
五容器四成一败;ts 最大 mkv 最小…
第八章 AVCodec编解码层理论及案例实战
编解码原理流程及API解析
557 个编解码器;h264 九套实现…
解码流程与案例实战
送一个收一遍;收 0 帧是正常;冲空包与…
编码流程与案例实战
四件事必须先说清;gop 决定关键帧位置…
FFmpeg编解码与时间基详解
三把尺子;不必互为倒数;先换成秒再乘最稳
第九章 AVFilter过滤器层理论及案例实战
FFmpeg包含滤镜的转码流程
五环里只换「处理」;31 包 6956→…
FFmpeg责任链模式简介
请求、处理者、链三件套;链长 0~3 同…
简单滤镜和复杂滤镜之间的区别
判据是几进几出;link_to 两下标写…
FFmpeg滤镜流程图
头中尾三段;缺哪头都报 Argument…
滤镜图、滤镜链、滤镜之间的关系
逗号是链内、分号是第二条链;本机 468…
FFmpeg滤镜相关的重要结构体
四结构体对照;图 12 个方法、节点 1…
DirectShow框架原理与流程解析
三个 Filter 对应三端点;dsho…
FFmpeg中使用过滤器的步骤
六步一步不少;configure 最易被…
AVFilter的API
七个 API 对照;process_co…
FFmpeg命令行方式体验过滤器
三个程序全不在 PATH;四条命令;这一…
FFmpeg的API方式实现过滤器
四段骨架落盘;时长 1003.56 秒的…
第十章 SWResample音频重采样理论及案例实战
音频基础
三参数相乘得每秒字节;44.1k 立体声…
PCM简介
裸 PCM 一个头都没有;16000 字…
PCM重采样
四组合计与理论分毫不差;直出少 16~3…
C语言实现PCM重采样
最近邻是重复与丢弃;线性插值十几行;库多…
FFmpeg与PCM格式
十二个名字=六精度乘两存法;s16 与…
Packed和Planar的区别
(1,12) 与 (2,6) 字节相同…
音频播放时间计算
样本数除采样率;pts 就是样本序号;p…
C语言分离左右声道
packed 隔一个取、planar 取…
swr的使用流程及API简介
六个参数;一次做三件事;一帧进不一定一帧…
SwrContext使用步骤解析
六步;漏冲空包少 96 个样本=2 毫秒…
使用swr实现PCM重采样案例实战
90112→98082,时长都是 2.0…
Packed模式转Planar模式
只改一个字母换存法;字节不变;真实链路…
第十一章 SWScale图像缩放与颜色空间转换
色彩空间转换的原理简介
RGB 说发光、YUV 说明暗+色差;黑…
SWScale库结构简介
267 种像素格式;五个枚举 18/5/…
SWScale图片色彩空间转换案例实战
一次 reformat 换格式加改尺寸…
第十二章 AVDevice设备读写理论及案例实战
AVDevice 的使用步骤及 API 解析
设备被伪装成格式;414 个格式名里设备…
AVDevice 的 API 方式采集本地摄像头获取的数据
三句话开设备;video_size 是「…
VMWare 中的 Ubuntu 采集本地摄像头获取的数据
三平台只差两个字符串;不在格式表与报 O…
AVDevice 的 API 方式采集话筒获取的数据
audio= 与 video= 同前缀…
FFmpeg 读取网络视频流并解码为 YUV
本机 HTTP 真跑一遍;line_si…
给摄像头实时添加水印后编码为 H.264
没 drawtext 就改像素;两次格式…