目录
第1章FFmpeg入门简介
1.1FFmpeg简介
1.1.1FFmpeg官网介绍
1.1.2FFmpeg耻辱柱
1.1.3Libav政变
1.1.4开源许可协议简介
1.2FFmpeg安装
1.2.1在Windows上安装FFmpeg
1.2.2在Linux上安装FFmpeg
1.2.3在macOS上安装FFmpeg
1.3FFmpeg项目组成
1.3.1工具
1.3.2SDK
1.3.3源码
1.4FFmpeg常用功能
1.5FFmpeg框架与处理流程
1.5.1FFmpeg的处理流程
1.5.2FFmpeg的关键结构体
第2章FFmpeg命令行初体验
2.1FFmpeg命令行简介
2.2音视频格式转换
2.3视频缩略图
2.4图片拼接成视频
2.5ffplay视频播放
2.6ffprobe获取视频信息
2.7Y4M视频文件格式
2.7.1Y4M格式简介
2.7.2Y4M格式规范
2.8PAL与NTSC
2.8.1制式
2.8.2PAL制式
2.8.3NTSC制式
第3章FFmpeg三大常用工具及应用选项详解
3.1ffmpeg工具简介
3.2ffplay工具简介
3.2.1ffplay常用参数
3.2.2ffplay高级参数
3.2.3ffplay的数据可视化分析应用
3.2.4VLC作为RTSP流媒体服务器
3.3ffprobe工具简介
3.3.1show_packets
3.3.2show_format
3.3.3show_frames
3.3.4show_streams
3.3.5print_format
3.3.6select_streams
3.4通用选项
3.5视频选项
3.6音频选项
3.7字幕选项
3.8高级选项
3.9map详解
3.10ffmpeg h详解
3.11FFmpeg其他选项
3.11.1formats: 支持的文件格式
3.11.2muxers: 支持的封装器格式
3.11.3demuxers: 支持的解封装器格式
3.11.4devices: 支持的设备
3.11.5encoders: 支持的编码器格式
3.11.6decoders: 支持的解码器格式
3.11.7protocols: 支持的协议格式
3.11.8hwaccels: 支持的硬件加速格式
3.11.9layouts: 支持的声道模式
3.11.10sample_fmts: 支持的采样格式
3.11.11colors: 支持的颜色名称
3.11.12pix_fmts: 支持的像素格式
第4章FFmpeg命令行实现音视频转封装
4.1视频容器及封装与解封装简介
4.2音视频流的分离与合成
4.2.1从MP4文件中提取音频流和视频流
4.2.2h264_mp4toannexb
4.2.3根据音频流和视频流合成MP4文件
4.2.4将多个MP4文件合并成一个MP4文件
4.3封装格式之间的互转
4.3.1MP4转换为FLV
4.3.2MP4转换为AVI
4.3.3其他格式转换
4.3.4AVI/FLV/TS格式简介
4.4MP4格式的faststart快速播放模式
4.4.1MP4格式简介
4.4.2faststart参数介绍
第5章FFmpeg命令行实现音视频转码
5.1音视频编解码及转码简介
5.1.1视频编解码简介
5.1.2音频编解码简介
5.1.3音视频转码简介
5.2提取音视频的YUV/PCM
5.2.1利用FFmpeg提取视频的YUV像素数据
5.2.2YUV444/YUV422/YUV420
5.2.3利用FFmpeg提取视频的RGB像素数据
5.2.4RGB16/RGB24/RGB32
5.2.5利用FFmpeg提取音频的PCM
5.2.6PCM数据与WAV格式
5.3音频编解码简介及命令行案例
5.3.1PCM编码为AAC
5.3.2AAC转码为MP3
5.3.3AAC转码为AC3
5.4视频编解码简介及命令行案例
5.4.1YUV编码为H.264
5.4.2MP4格式转码为FLV格式
5.4.3MP4格式转码为AVI格式
5.4.4MP4格式转码为TS格式
5.4.5其他格式之间互转
5.5控制音频的声道数、采样率及采样格式
5.5.1单声道与立体声互转
5.5.2采样率转换
5.5.3采样格式转换及音频重采样
5.6控制视频的帧率、码率及分辨率
5.6.1控制视频的帧率
5.6.2控制视频的码率及分辨率
5.6.3控制视频的GOP
5.6.4视频GOP简介
5.7libx264的常用编码选项及应用案例
5.7.1FFmpeg中libx264的选项
5.7.2x264.exe中的选项名与选项值
5.8libx265的常用编码选项及应用案例
5.9FFmpeg的GPU硬件加速原理及应用案例
第6章FFmpeg命令行实现图片水印及文字跑马灯
6.1FFmpeg的滤镜技术
6.2图片水印及位置控制
6.2.1vf的movie滤镜
6.2.2vf的movie中的绝对路径
6.2.3vf的delogo去掉水印
6.3文字水印及位置控制
6.3.1vf的drawtext添加固定文字水印
6.3.2vf的drawtext控制文字颜色及大小
6.3.3查看drawtext的参数
6.3.4drawtext的文字内容来源
6.3.5drawtext的主要参数
6.3.6vf的drawtext添加系统时间水印
6.4文字跑马灯案例实战
6.5FFmpeg的overlay技术简介
6.5.1overlay技术简介
6.5.2filter_complex overlay添加水印
6.6控制文字的大小和颜色并解决中文乱码问题
6.6.1vf的drawtext添加中文水印
6.6.2vf的drawtext解决中文乱码问题
6.6.3vf的drawtext中使用绝对路径
第7章FFmpeg命令行实现音视频特效及复杂滤镜应用
7.1复杂滤镜filter_complex简介
7.1.1简单滤镜和复杂滤镜案例入门
7.1.2滤镜图、滤镜链、滤镜的关系
7.1.3简单滤镜和复杂滤镜的区别
7.1.4流和滤镜的结合使用
7.2视频缩放及scale参数详解
7.2.1使用scale实现缩放
7.2.2使用scale保持宽高比缩放
7.2.3使用FFmpeg的内置变量进行缩放
7.2.4使用min或max函数进行缩放
7.2.5使用force_original_aspect_ratio进行缩放
7.2.6使用pad选项填充黑边
7.2.7使用scale的指定算法进行缩放
7.2.8scale参数说明
7.3音视频倍速
7.3.1视频倍速
7.3.2音频倍速
7.3.3音视频同时倍速
7.3.4使用ffplay倍速播放
7.4视频裁剪及crop参数详解
7.4.1使用crop实现裁剪
7.4.2crop参数说明
7.4.3复杂滤镜nullsrc、crop、overlay结合使用
7.4.4nullsrc参数说明
7.4.5使用nullsrc生成一段空屏视频
7.4.6使用color滤镜生成黑色背景的视频
7.5视频倒放
7.6视频翻转与旋转
7.7视频填充pad滤镜
7.8视频倒影及镜面水面特效
7.9画中画
7.9.1画中画技术简介
7.9.2使用overlay实现画中画
7.9.3使用overlay与scale的结合实现画中画
7.9.4画中画的灵活位置
7.10九宫格
7.10.1九宫格简介
7.10.2使用FFmpeg实现“四宫格”
7.10.3实现“四宫格”的任意顺序
7.10.4使用FFmpeg实现“九宫格”
7.10.5实现的视频“四宫格”
7.11淡入淡出效果
7.11.1fade滤镜的参数说明
7.11.2fade滤镜的用法
7.11.3fade滤镜的案例
7.12黑白效果
7.13模糊处理
7.14视频颤抖
7.15浮雕效果
7.15.1geq滤镜参数简介
7.15.2geq滤镜的官网介绍
7.16静音音频和黑幕视频
7.16.1生成静音音频
7.16.2生成纯色视频
7.17软字幕和硬字幕
7.17.1字幕简介
7.17.2字幕处理
第8章FFmpeg命令行实现流媒体功能及直播应用
8.1RTSP简介及直播流
8.1.1RTSP简介
8.1.2VLC作为RTSP流媒体服务器
8.1.3FFmpeg实现RTSP直播拉流
8.1.4RTSP交互流程分析
8.1.5VLC使用摄像头模拟RTSP直播流
8.2RTP简介及直播流
8.2.1RTP简介
8.2.2VLC作为RTP流媒体服务器
8.2.3FFmpeg实现RTP直播拉流
8.3HTTP简介及直播流
8.3.1HTTP简介
8.3.2HTTP流媒体
8.3.3VLC作为HTTP流媒体服务器
8.3.4FFmpeg实现HTTP直播拉流
8.4UDP简介及直播流
8.4.1UDP简介
8.4.2VLC作为UDP流媒体服务器
8.4.3FFmpeg实现UDP直播拉流
8.5流媒体服务器的搭建
8.6RTMP直播推流与拉流
8.6.1RTMP简介
8.6.2直播推流与拉流
8.6.3使用FFmpeg实现RTMP直播推流
8.6.4使用ffplay播放RTMP直播流
8.7HLS与M3U8直播功能
8.7.1NginxHTTPFLV生成HLS切片
8.7.2M3U8简介
8.7.3使用ffplay播放HLS直播流
第9章FFmpeg命令行实现音视频设备采集
9.1FFmpeg枚举设备
9.2FFmpeg采集本地话筒与摄像头数据
9.3FFmpeg采集网络摄像头获取的数据并录制
9.4FFmpeg采集摄像头与话筒获取的数据并直播
9.5Linux系统中FFmpeg采集摄像头获取的数据
9.5.1VMware中的Ubuntu连接USB摄像头
9.5.2FFmpeg采集USB摄像头获取的数据
9.6FFmpeg录制计算机屏幕
9.6.1Windows系统中FFmpeg录屏
9.6.2Linux系统中FFmpeg录屏
第10章FFmpeg命令行在Linux系统中的应用
10.1使用FFmpeg实现音视频转码
10.2使用ffplay和ffprobe
10.3使用FFmpeg实现文字水印及跑马灯
10.4使用FFmpeg实现音视频特效
10.5使用FFmpeg实现流媒体及直播功能
第11章体验FFmpeg 5.0
11.1安装FFmpeg 5.0
11.1.1FFmpeg 5.0的官网简介
11.1.2FFmpeg 5.0的安装
11.2使用FFmpeg 5.0实现音视频转码
11.3使用FFmpeg 5.0实现文字跑马灯
11.4使用FFmpeg 5.0实现音视频特效
11.5使用FFmpeg 5.0实现流媒体及直播功能
第12章各种开发语言调用FFmpeg命令行
12.1C++调用FFmpeg命令行
12.1.1C++调用FFmpeg命令行的跨平台通用代码
12.1.2Visual Studio调用FFmpeg命令行
12.1.3Qt调用FFmpeg命令行
12.1.4MinGW调用FFmpeg命令行
12.1.5Linux系统下C++调用FFmpeg命令行
12.1.6popen与pclose
12.2Java调用FFmpeg命令行
12.3Python调用FFmpeg命令行