FFmpeg入门详解--命令行及音视频特效原理及应用:梅会东:清华大学出版社
大家好,我的第三本书正式出版了,可以在京东各大店铺抢购哦。
《FFmpeg入门详解--命令行及音视频特效原理及应用:梅会东:清华大学出版社》
https://search.jd.com/Search?keyword=FFmpeg%E5%85%A5%E9%97%A8%E8%AF%A6%E8%A7%A3--%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%8F%8A%E9%9F%B3%E8%A7%86%E9%A2%91%E7%89%B9%E6%95%88%E5%8E%9F%E7%90%86%E5%8F%8A%E5%BA%94%E7%94%A8&enc=utf-8&wq=&pvid=2d192e59e0fa4468aa60a0e4ed40f1e7
《FFmpeg入门详解--SDK二次开发与直播美颜原理及应用:梅会东:清华大学出版社》
出书过程非常艰辛,来回校正了好几遍,后续还有FFmpeg系列的其它图书。
第一本:FFmpeg入门详解--音视频原理及应用--梅会东--清华大学出版社
第二本:FFmpeg入门详解--流媒体直播原理及应用--梅会东--清华大学出版社
第三本:FFmpeg入门详解--命令行及音视频特效原理及应用--梅会东--清华大学出版社
第四本:FFmpeg入门详解--SDK二次开发及直播美颜原理及应用--梅会东--清华大学出版社
===========================
第1章 FFmpeg入门简介 12
1.1 FFmpeg简介 12
1.1.1 FFmpeg官网介绍 13
1.1.2 FFmpeg耻辱柱 14
1.1.3 Libav政变 14
1.1.4 开源许可协议简介 15
1.2 FFmpeg安装 18
1.2.1 在Windows上安装FFmpeg 18
1.2.2 在Linux上安装FFmpeg 22
1.2.3 在macOS上安装FFmpeg 24
1.3 FFmpeg项目组成 25
1.3.1 工具 25
1.3.2 SDK 25
1.3.3 源码 26
1.4 FFmpeg常用功能 26
1.4.1 视频采集功能 26
1.4.2 视频格式转换功能 27
1.4.3 视频截图 27
1.4.4 给视频加水印功能 27
1.4.5 ffplay的视频播放功能 27
1.4.6 ffprobe的媒体信息分析功能 27
1.5 FFmpeg框架与处理流程 27
1.5.1 ffmpeg的处理流程 27
1.5.2 ffmpeg的关键结构体 28
第2章 FFmpeg命令行初体验 30
2.1 FFmpeg命令行简介 31
2.2 音视频格式转换 32
2.3 视频缩略图 34
2.3.1 生成所有帧的视频缩略图 35
2.3.2 指定图片宽高的视频缩略图 35
2.3.3 指定时间段的视频缩略图 35
2.3.4 指定每秒截取速率的视频缩略图 36
2.3.5 指定帧数的视频缩略图 36
2.3.6 指定输出gif类型的视频缩略图 36
2.4 图片拼接成视频 36
2.5 ffplay视频播放 39
2.6 ffprobe获取视频信息 40
2.7 Y4M视频文件格式 41
2.7.1 Y4M格式简介 41
2.7.2 Y4M格式规范 42
2.8 PAL与NTSC 45
2.8.1 制式 46
2.8.2 PAL制 47
2.8.3 NTSC制 48
第3章 FFmpeg三大常用工具及应用选项详解 49
3.1 ffmpeg工具简介 49
3.2 ffplay工具简介 51
3.2.1 ffplay常用参数 51
3.2.2 ffplay高级参数 52
3.2.3 ffplay的数据可视化分析应用 57
3.2.4 VLC作为RTSP流媒体服务器 58
3.3 ffprobe工具简介 61
3.3.1 show_packets 62
3.3.2 show_format 62
3.3.3 show_frames 64
3.3.4 show_streams 68
3.3.5 print_format 70
3.3.6 select_streams 73
3.4 通用选项 74
3.5 视频选项 75
3.6 声频选项 76
3.7 字幕选项 77
3.8 高级选项 77
3.9 map详解 78
3.10 ffmpeg -h详解 79
3.11 ffmpeg其它选项 82
3.11.1 -formats:支持的文件格式 82
3.11.2 -muxers:支持的封装器格式 84
3.11.3 -demuxers:支持的解封装器格式 87
3.11.4 -devices:支持的设备 89
3.11.5 -encoders:支持的编码器格式 90
3.11.6 -decoders:支持的解码器格式 93
3.11.7 -protocols:支持的协议格式 96
3.11.8 -hwaccels:支持的硬件加速格式 98
3.11.9 -layouts:支持的声道模式 98
3.11.10 -sample_fmts:支持的采样格式 99
3.11.11 -colors:支持的颜色名称 100
3.11.12 -pix_fmts:支持的像素格式 101
第4章 FFmpeg命令行实现音视频转封装 104
4.1 视频容器及封装与解封装简介 105
4.2 音视频流的分离与合成 108
4.2.1 从mp4文件中提取出声频流和视频流 108
4.2.2 h264_mp4toannexb 114
4.2.3 根据声频流和视频流合成mp4文件 116
4.2.3 将多个mp4文件合并成一个mp4文件 117
4.3 封装格式之间的互转 119
4.3.1 MP4转换为FLV 120
4.3.2 MP4转换为AVI 121
4.3.3 其它格式转换 123
4.3.4 AVI/FLV/TS格式简介 127
4.4 MP4格式的faststart快速播放模式 132
4.4.1 MP4格式简介 132
4.4.2 MP4格式的faststart快速播放模式 134
第5章 FFmpeg命令行实现音视频转码 143
5.1 音视频编解码及转码简介 143
5.1.1 视频编解码简介 143
5.1.2 声频编解码简介 144
5.1.3 音视频转码简介 144
5.2 提取音视频的YUV/PCM 146
5.2.1 利用ffmpeg提取视频的YUV像素数据 146
5.2.2 YUV444/YUV422/YUV420 152
5.2.3 利用ffmpeg提取视频的RGB像素数据 158
5.2.4 RGB16/RGB24/RGB32 166
5.2.5 利用ffmpeg提取声频的PCM 170
5.2.6 PCM数据与WAV格式 174
5.3 声频编解码简介及命令行案例 185
5.3.1 PCM编码为AAC 186
5.3.2 AAC转码为MP3 187
5.3.2 AAC转码为AC-3 188
5.4 视频编解码简介及命令行案例 190
5.4.1 YUV编码为H.264 190
5.4.2 MP4格式转码为FLV格式 192
5.4.3 MP4格式转码为AVI格式 194
5.4.4 MP4格式转码为TS格式 196
5.4.5 其它格式之间互转 198
5.5 控制声频的声道数采样率及采样格式 198
5.5.1 单声道与立体声互转 198
5.5.2 采样率转换 199
5.5.3 采样格式转换及声频重采样 199
5.6 控制视频的帧率码率及分辨率 201
5.6.1 控制视频的帧率 201
5.6.2 控制视频的码率及分辨率 205
5.6.3 控制视频的GOP 206
5.6.4 视频GOP简介 206
5.7 libx264的常用编码选项及应用案例 207
5.7.1 ffmpeg中libx264的选项 208
5.7.2 x264.exe中的选项名与选项值 211
5.8 libx265的常用编码选项及应用案例 214
5.9 FFmpeg的GPU硬件加速原理及应用案例 216
第6章 FFmpeg命令行实现图片水印及文字跑马灯 218
6.1 FFmpeg的过滤器技术 218
6.2 图片水印及位置控制 218
6.2.1 -vf的movie过滤器 218
6.2.2 -vf的movie中的绝对路径 220
6.2.3 -vf的delogo去掉水印 221
6.3 文字水印及位置控制 223
6.3.1 -vf的drawtext添加固定文字水印 223
6.3.2 -vf的drawtext控制文字颜色及大小 224
6.3.3 查看的drawtext的参数 225
6.3.4 drawtext的文字内容来源 227
6.3.5 drawtext的主要参数 227
6.3.6 -vf的drawtext添加系统时间水印 231
6.4 文字跑马灯案例实战 232
6.4.1 -vf的drawtext添加每一帧的序号 232
6.4.2 -vf的drawtext添加系统时间 233
6.4.3 -vf的drawtext同时添加每一帧的序号和帧类型 234
6.4.4 drawtext实现从左到右文字跑马灯 234
6.4.5 drawtext实现从右到左文字跑马灯 235
6.5 FFmpeg的overlay技术简介 236
6.4.1 overlay技术简介 236
6.4.2 -filter_complex overlay添加水印 237
6.6 控制文字的大小和颜色并解决中文乱码 240
6.6.1 -vf的drawtext添加中文水印 240
6.6.2 -vf的drawtext解决中文乱码 241
6.6.3 -vf的drawtext中使用绝对路径 242
第7章 FFmpeg命令行实现音视频特效及复杂滤镜应用 244
7.1 复杂滤镜filter_complex简介 245
7.1.1简单滤镜和复杂滤镜案例入门 245
7.1.2滤镜图、滤镜链、滤镜之间的关系 247
7.1.3简单滤镜和复杂滤镜之间的区别 248
7.1.4流和滤镜的结合使用 250
7.2 视频缩放及scale参数详解 252
7.2.1使用scale实现缩放 252
7.2.2使用scale保持宽高比缩放 253
7.2.3使用ffmpeg的内置变量进行缩放 254
7.2.4使用min或max函数进行缩放 255
7.2.5使用force_original_aspect_ratio进行缩放 256
7.2.6使用 pad选项填充黑边 257
7.2.7使用scale的指定算法进行缩放 257
7.2.8 scale参数说明 258
7.3 音视频倍速 258
7.3.1视频倍速 258
7.3.2声频倍速 261
7.3.3音视频同时倍速 261
7.3.4使用ffplay倍速播放 262
7.4 视频裁剪及crop参数详解 263
7.4.1使用crop实现裁剪 263
7.4.2 crop参数说明 264
7.4.3复杂滤镜nullsrc、crop、overlay结合使用 265
7.4.4 nullsrc参数说明 266
7.4.5 使用nullsrc生成一段空屏视频 267
7.4.6 使用color滤镜生成黑色背景的视频 268
7.5 视频倒放 268
7.6 视频翻转与旋转 269
7.6.1 使用hflip实现水平翻转 269
7.6.2 使用vflip实现垂直翻转 269
7.6.3 transpose参数说明 270
7.6.4 顺时针旋转90° 270
7.6.5 逆时针旋转90° 271
7.6.6 顺时针旋转90°后再垂直翻转 272
7.6.7 逆时针旋转90°后再垂直翻转 273
7.6.8 顺时针旋转180° 274
7.6.9 顺时针旋转45° 274
7.7 视频填充pad滤镜 275
7.7.1 使用pad滤镜实现填充效果 275
7.7.2 使用pad滤镜实现填充效果 276
7.7.3 使用pad滤镜实现4:3到16:9 277
7.7.4 使用pad滤镜实现16:9到4:3 278
7.8 视频倒影及镜面水面特效 279
7.8.1 水面倒影 279
7.8.2 镜面特效 280
7.8.2 镜面特效 281
7.9 画中画 281
7.9.1 画中画技术简介 281
7.9.2 使用overlay实现画中画 282
7.9.3 使用overlay与scale的结合实现画中画 282
7.9.4 画中画的灵活位置 283
7.10 九宫格 285
7.10.1 九宫格简介 286
7.10.2 使用ffmpeg实现“四宫格” 286
7.10.3 实现“四宫格”的任意顺序 289
7.10.4 使用ffmpeg实现“九宫格” 290
7.10.5 实现的视频“四宫格” 291
7.11 淡入淡出效果 292
7.11.1 fade滤镜的参数说明 292
7.11.2 fade滤镜的用法 293
7.11.3 fade滤镜的案例 294
7.12 黑白效果 295
7.12.1 hue滤镜简介 295
7.12.2 lutyuv滤镜简介 296
7.12.3 hue滤镜实现色彩变幻 296
7.12.4 hue滤镜的参数说明 297
7.13 模糊处理 297
7.13.1 boxblur滤镜实现模糊效果 297
7.13.2 boxblur滤镜的参数说明 298
7.14 视频颤抖 298
7.15 浮雕效果 299
7.15.1 geq滤镜参数简介 300
7.15.2 geq滤镜的官网介绍 300
7.16 静音声频和黑幕视频 301
7.16.1 生成静音声频 302
7.16.2 生成纯色视频 303
7.17 软字幕和硬字幕 304
7.17.1 字幕简介 304
7.17.2 字幕处理 307
第8章 FFmpeg命令行实现流媒体功能及直播应用 311
8.1 RTSP简介及直播流 312
8.1.1 RTSP简介 312
8.1.2 VLC作为RTSP流媒体服务器 313
8.1.3 FFmpeg实现RTSP直播拉流 316
8.1.4 RTSP交互流程分析 319
8.1.5 VLC使用摄像头模拟出RTSP直播流 321
8.2 RTP简介及直播流 322
8.2.1 RTP简介 323
8.2.2 VLC作为RTP流媒体服务器 323
8.2.3 FFmpeg实现RTP直播拉流 324
8.3 HTTP简介及直播流 326
8.3.1 HTTP简介 326
8.3.2 HTTP流媒体 327
8.3.3 VLC作为HTTP流媒体服务器 328
8.3.4 FFmpeg实现HTTP直播拉流 329
8.4 UDP简介及直播流 330
8.4.1 RTP简介 330
8.4.2 VLC作为UDP流媒体服务器 331
8.4.3 FFmpeg实现HTTP直播拉流 331
8.5 流媒体服务器的搭建 333
8.6 RTMP直播推流与拉流 335
8.6.1 RTMP简介 335
8.6.2 直播推流与拉流 336
8.6.3 使用ffmpeg实现RTMP直播推流 337
8.6.4 使用ffplay播放RTMP直播流 337
8.7 HLS与M3U8直播功能 338
8.7.1 Nginx-HTTP-FLV生成HLS切片 338
8.7.2 M3U8简介 339
8.7.3 使用ffplay播放HLS直播流 341
第9章 FFmpeg命令行实现音视频设备采集 341
9.1 FFmpeg枚举设备 342
9.1.1枚举音视频采集设备 342
9.1.2查询视频采集设备的参数 342
9.1.3查询声频采集设备的参数 343
9.2 FFmpeg采集本地麦克风与摄像头 343
9.2.1使用ffmpeg采集麦克风与摄像头 343
9.2.2使用ffmpeg指定麦克风与摄像头的输入参数 344
9.2.3将-s放到-i后用于指定输出视频的分辨率 345
9.3 FFmpeg采集网络摄像头并录制 346
9.4 FFmpeg采集麦克风摄像头并直播 347
9.5 Linux系统中FFmpeg采集摄像头 348
9.5.1 VMware中的Ubuntu连接USB摄像头 348
9.5.2 FFmepg采集USB摄像头 352
9.6 FFmpeg录制电脑屏幕 353
9.6.1 Window系统中FFmpeg录屏 353
9.6.2 Linux系统中FFmpeg录屏 355
第10章 FFmpeg命令行在Linux系统中的应用 357
10.1 使用ffmpeg实现音视频转码 357
10.2 使用ffplay和ffprobe 358
10.3 使用ffmpeg实现文字水印及跑马灯 360
10.4 使用ffmpeg实现音视频特效 362
10.5 使用ffmpeg实现流媒体及直播功能 364
第11章 体验最新版FFmpeg5.0 365
11.1 安装最新版FFmpeg 366
11.1.1 FFmpeg5.0的官网简介 366
11.1.2 FFmpeg5.0的安装 367
11.2 使用最新版FFmpeg实现音视频转码 370
11.3 使用最新版FFmpeg实现文字水印及跑马灯 370
11.4 使用最新版FFmpeg实现音视频特效 371
11.5 使用最新版FFmpeg实现流媒体及直播功能 372
第12章 各种开发语言调用FFmpeg命令行 374
12.1 C++调用FFmpeg命令行 374
12.1.1 C++调用FFmpeg命令行的跨平台通用代码 375
12.1.2 VS Studio调用FFmpeg命令行 376
12.1.3 Qt调用FFmpeg命令行 379
12.1.4 Mingw调用FFmpeg命令行 381
12.1.5 Linux系统下C++调用FFmpeg命令行 382
12.1.6 popen与pclose 384
12.2 Java调用FFmpeg命令行 386
12.3 Python调用FFmpeg命令行 389