《深入理解 FFmpeg》
京东购买链接:https://item.m.jd.com/product/10087888144420.html当当购买链接:https://product.dangdang.com/29636237.html
目录[AppleScript] 纯文本查看 复制代码 上篇 基础与参数详解
第 1章 多媒体基础 2
1.1 从现实世界到数字世界 2
1.1.1 颜色和图像 2
1.1.2 电影、电视和视频 4
1.1.3 音频 6
1.1.4 音视频封装、传输和 未来 10
1.2 视频图像像素点的数据格式 10
1.2.1 图像的位深 10
1.2.2 FourCC 11
1.2.3 灰度模式表示 11
1.2.4 YUV色彩表示 11
1.2.5 RGB色彩表示 15
1.2.6 HSL与HSV色彩表示 18
1.3 视频逐行和隔行扫描、NTSC与 PAL制式 19
1.3.1 逐行与隔行扫描 19
1.3.2 NTSC制式 20
1.3.3 PAL制式 21
1.4 帧率、PTS和DTS 22
1.5 图像分辨率与宽高比 22
1.6 图像的色彩空间 23
1.7 音频采样数据格式 24
1.7.1 声道 25
1.7.2 采样率 26
1.7.3 采样位深 27
1.7.4 带宽计算 28
1.8 小结 28
第 2章 FFmpeg简介 29
2.1 FFmpeg的发展历史 29
2.2 FFmpeg的基本组成 31
2.2.1 封装/解封装模块 AVFormat 32
2.2.2 编/解码模块AVCodec 32
2.2.3 滤镜模块AVFilter 32
2.2.4 设备模块AVDevice 33
2.2.5 图像转换模块swscale 34
2.2.6 音频转换模块 swresample 34
2.2.7 编解码工具ffmpeg 34
2.2.8 播放器ffplay 35
2.2.9 多媒体分析器ffprobe 35
2.3 不同平台下的编译 35
2.3.1 Windows平台编译 FFmpeg 36
2.3.2 Linux平台编译 FFmpeg 37
2.3.3 macOS平台编译 FFmpeg 38
2.4 FFmpeg特性的选择与定制 38
2.4.1 编码器支持 40
2.4.2 解码器支持 41
2.4.3 封装支持 41
2.4.4 解封装支持 42
2.4.5 通信协议支持 42
2.5 小结 43
第3章 FFmpeg工具使用基础 44
3.1 ffmpeg常用命令 44
3.1.1 封装转换 46
3.1.2 解码和编码 47
3.1.3 转码流程 48
3.2 ffprobe常用命令 49
3.2.1 ffprobe常用参数 49
3.2.2 ffprobe使用示例 51
3.3 ffplay常用命令 58
3.3.1 ffplay常用参数 59
3.3.2 ffplay*参数 60
3.3.3 ffplay的数据可视化分析 应用 63
3.3.4 ffplay快捷键 65
3.4 小结 65
第4章 封装与解封装 66
4.1 视频文件转MP4 67
4.1.1 MP4格式标准介绍 68
4.1.2 Fragment MP4与CMAF 89
4.1.3 MP4分析工具 91
4.1.4 MP4在FFmpeg中的 Demuxer 94
4.1.5 MP4在FFmpeg中的 Muxer 95
4.2 视频文件转FLV 99
4.2.1 FLV文件标准介绍 99
4.2.2 FLV Muxer参数说明 104
4.2.3 文件转FLV举例 104
4.2.4 生成带关键索引的 FLV 105
4.2.5 FLV文件格式分析 工具 106
4.3 视频文件转MPEG-TS 107
4.3.1 MPEG-TS格式简介 109
4.3.2 MPEG-TS Muxer参数 说明 113
4.3.3 MPEG-TS格式分析 工具 114
4.4 视频文件转HLS 115
4.4.1 HLS标准的M3U8 介绍 116
4.4.2 HLS Muxer参数 119
4.4.3 HLS Muxer举例说明 119
4.5 视频文件切片 128
4.5.1 segment切片参数 128
4.5.2 segment切片举例 129
4.5.3 使用ss与t参数切片 132
4.6 视频文件的音视频流抽取 133
4.6.1 提取AAC音频流 133
4.6.2 提取H.264视频流 134
4.6.3 提取H.265视频流 134
4.7 系统资源使用情况 135
4.8 小结 136
第5章 编码与转码 137
5.1 软编码H.264 138
5.1.1 x264编码参数简介 139
5.1.2 H.264编码举例 141
5.2 硬件加速 154
5.2.1 基于OS的硬件加速方案 简介 155
5.2.2 NVIDIA GPU硬编 解码 163
5.2.3 Intel QSV硬编解码 165
5.2.4 Raspberry Pi硬编解码 170
5.2.5 macOS系统硬编解码 171
5.2.6 其他加速方案简介 173
5.3 输出MP3 173
5.3.1 MP3编码参数介绍 174
5.3.2 MP3的编码质量设置 174
5.3.3 平均码率编码ABR 参数 176
5.4 输出AAC 176
5.4.1 AAC编码器操作 178
5.4.2 FDK-AAC 179
5.4.3 高质量AAC设置 182
5.4.4 AAC音频质量对比 182
5.5 系统资源使用情况 182
5.6 小结 183
第6章 流媒体技术 184
6.1 录制与发布RTMP流 185
6.1.1 RTMP参数说明 186
6.1.2 RTMP参数举例 187
6.2 录制与发布RTSP流 189
6.2.1 RTSP demuxer参数 介绍 190
6.2.2 RTSP demuxer参数使用 举例 191
6.2.3 RTSP demuxer/muxer的 一些小说明 193
6.3 录制HTTP流 194
6.3.1 HTTP参数说明 194
6.3.2 HTTP参数举例 195
6.4 录制与发布UDP/TCP流 197
6.4.1 TCP与UDP参数 197
6.4.2 TCP/UDP参数使用 举例 198
6.4.3 TCP/UDP使用小结 201
6.5 多路流输出 202
6.5.1 管道方式输出多路流 202
6.5.2 tee封装格式输出 202
6.5.3 tee协议输出多路流 203
6.6 DASH流输出 204
6.6.1 参数介绍 205
6.6.2 参数举例 205
6.7 HDS流输出 206
6.7.1 参数说明 206
6.7.2 HDS使用举例 207
6.8 小结 208
第7章 bitstream过滤器 209
7.1 aac_adtstoasc过滤器 210
7.1.1 ADTS格式 210
7.1.2 ASC格式 211
7.2 mp4toannexb过滤器 212
7.2.1 Annex B格式 213
7.2.2 AVCC格式 213
7.2.3 hevc_mp4toannexb/h264_ mp4toannexb的使用 214
7.3 h264_metadata过滤器 215
7.3.1 h264_metadata参数说明 216
7.3.2 h264_metadata参数举例 216
7.3.3 其他Codec的metadata 过滤器 221
7.4 其他常用bitstream过滤器 221
7.4.1 dump_extra 221
7.4.2 trace_headers 222
7.4.3 filter_units 223
7.5 小结 225
第8章 滤镜使用 226
8.1 滤镜表达式使用 226
8.2 滤镜描述格式 229
8.2.1 滤镜基本排列方式 229
8.2.2 时间内置变量 229
8.3 视频水印操作 229
8.3.1 文字水印示例 229
8.3.2 图片水印示例 232
8.4 画中画操作 233
8.5 视频多宫格处理 235
8.6 视频字幕操作 237
8.6.1 ASS字幕流写入视频流 237
8.6.2 ASS字幕写入封装容器 238
8.7 视频3D化处理 239
8.7.1 stereo3d处理3D视频 239
8.7.2 3D图像转换示例 241
8.8 视频截图操作 242
8.8.1 vframes参数截取一张图片 242
8.8.2 fps滤镜定时获得图片 242
8.9 音频流滤镜操作 243
8.9.1 双声道合并单声道 243
8.9.2 双声道提取 243
8.9.3 双声道转双音频流 244
8.9.4 单声道转双声道 244
8.9.5 两个音频源合并双声道 245
8.9.6 多个音频合并为多声道 245
8.10 音频音量探测 246
8.10.1 音频音量获得 246
8.10.2 绘制音频波形 247
8.11 生成测试元数据 248
8.11.1 生成音频测试流 248
8.11.2 生成视频测试流 248
8.12 音视频倍速处理 250
8.12.1 atempo音频倍速处理 250
8.12.2 setpts视频倍速处理 251
8.13 云剪辑常用技术 252
8.13.1 定格帧 252
8.13.2 透明视频兼容处理 252
8.13.3 隔行交错视频兼容处理 253
8.13.4 HDR视频兼容处理 254
8.13.5 雪碧图和WebVTT 255
8.13.6 缩略图 256
8.13.7 复杂项目渲染 256
8.13.8 色度抠图 257
8.13.9 蒙版抠图 258
8.13.10 调色 259
8.13.11 透明度调整 259
8.13.12 动态缩放 260
8.13.13 画质检测 260
8.13.14 滤镜动态调整 262
8.13.15 深度学习 262
8.14 小结 264
第9章 采集设备操作 265
9.1 Linux设备操作 265
9.1.1 查看设备列表 265
9.1.2 采集设备fbdev参数说明 和使用 266
9.1.3 采集设备v4l2参数说明 和使用 266
9.1.4 采集设备x11grab参数 说明和使用 268
9.2 macOS设备操作 269
9.2.1 查看设备列表 270
9.2.2 设备采集举例 270
9.3 Windows设备采集 273
9.3.1 使用dshow采集音视频 设备 273
9.3.2 使用vfwcap采集视频 设备 274
9.3.3 使用gdigrab采集窗口 274
9.4 小结 276
下篇 API使用及开发
第 10章 libavformat接口的使用 279
10.1 媒体流封装 281
10.2 媒体流解封装 284
10.3 文件转封装 288
10.4 视频截取 290
10.5 AVIO以及示例 292
10.6 AVPacket常用操作 296
10.7 小结 300
第 11章 libavcodec接口的使用 301
11.1 旧接口的使用 302
11.1.1 视频解码旧接口 303
11.1.2 视频编码旧接口 306
11.1.3 音频解码旧接口 308
11.1.4 音频编码旧接口 310
11.2 新接口的使用 311
11.2.1 视频解码新接口 312
11.2.2 视频编码新接口 315
11.2.3 音频解码新接口 318
11.2.4 音频编码新接口 320
11.3 硬件加速的编解码 322
11.3.1 硬件加速解码 323
11.3.2 硬件加速编码 327
11.4 AVFrame操作 329
11.5 内存操作 335
11.6 小结 337
第 12章 libavfilter接口的使用 338
12.1 Filter和FilterGraph简述 338
12.2 FFmpeg中内置的滤镜 340
12.2.1 音频滤镜 340
12.2.2 视频滤镜 345
12.3 libavfilter的API使用 354
12.4 使用滤镜给视频加Logo 356
12.5 小结 360
第 13章 FFmpeg辅助库的使用 361
13.1 libavutil的dict与opt操作 361
13.2 libswscale的sws_scale图像 转换 368
13.2.1 图像转换流程 368
13.2.2 代码实例 370
13.3 libswresample执行声音转换 374
13.3.1 声音转换流程 374
13.3.2 代码实例 376
13.4 小结 379
第 14章 音视频播放器开发实例 380
14.1 播放器开发概述 380
14.2 SDL核心功能API介绍 381
14.2.1 初始化SDL库 381
14.2.2 图像渲染 381
14.3 SDL音频播放 387
14.3.1 SDL事件循环 389
14.3.2 SDL定时器 391
14.4 播放器解码和展示 392
14.4.1 FFmpegPlayerCtx 393
14.4.2 播放器设计 395
14.4.3 事件循环线程 399
14.4.4 demux线程 400
14.4.5 视频解码线程 408
14.4.6 音视频同步 412
14.4.7 音视频扩展 417
14.5 小结 417
第 15章 FFmpeg在RTC中的实例解析 418
15.1 RTC的特点 418
15.1.1 什么是RTC 418
15.1.2 RTC媒体传输 419
15.2 FFmpeg在Chromium中的应用 421
15.2.1 FFmpeg在Chromium WebRTC中的应用 422
15.2.2 FFmpeg在Chromium中的其他应用 428
15.3 FFmpeg在FreeSWITCH中的应用 433
15.3.1 FreeSWITCH简介 433
15.3.2 FreeSWITCH的FFmpeg 模块开发环境准备 434
15.3.3 FFmpeg初始化和加载 436
15.3.4 avcodec实例 436
15.3.5 avformat实例 447
15.3.6 其他 468
15.4 FFmpeg在BareSIP中的应用 469
15.4.1 AVCodec 469
15.4.2 AVFormat 480
15.4.3 AVFilter 489
15.5 小结 494
第 16章 定制FFmpeg模块 495
16.1 添加AVFormat模块 496
16.1.1 book文件格式 496
16.1.2 添加文件 497
16.1.3 添加文件封装格式 497
16.1.4 添加文件解封装格式 502
16.2 添加AVCodec模块 505
16.2.1 book编解码算法定义 505
16.2.2 实现book编码 505
16.2.3 实现book解码 507
16.2.4 将编解码器注册到FFmpeg 并加入编译工程 508
16.2.5 运行测试 509
16.3 添加AVFilter模块 509
16.3.1 添加基础滤镜 509
16.3.2 支持多线程图像处理 512
16.3.3 支持图像动态化的表达式 513
16.3.4 支持process_command 515
16.4 添加Protocol模块 516
16.4.1 添加新协议的消息结构 516
16.4.2 回调函数 517
16.4.3 编译 518
16.4.4 测试 519
16.5 小结 519
第 17章 FFmpeg调试与测试 520
17.1 自身的调试选项 520
17.1.1 debug选项 520
17.1.2 DTS/PTS问题的排查 521
17.2 loglevel与report 522
17.2.1 使用loglevel 522
17.2.2 使用report 523
17.3 在调用库时的调试 523
17.3.1 基于日志 524
17.3.2 基于带调试信息库 524
17.4 给社区汇报Bug及提交补丁 525
17.4.1 代码风格 525
17.4.2 给FFmpeg贡献代码 528
17.5 小结 530
《FFmpeg 从入门到精通》
淘宝购买链接 点击这里进出版社淘宝店
京东电子书链接 点击这里进入京东电子书店 推荐买纸质版,电子版可能有排版和错别字问题
当当自营链接 点击这里进入当当自营书店
共享一下目录,即将出版,大概是在春节之后会印刷。
[C] 纯文本查看 复制代码 目录
前言 ii
为什么要写这本书 ii
读者对象 ii
如何阅读本书 iii
勘误和支持 iii
第一部分 FFmpeg的命令行使用篇 1
第1章 FFmpeg介绍 3
1.1 FFmpeg定义 3
1.2 FFmpeg历史 3
1.3 FFmpeg的基本组成 4
1.4 FFmpeg 的编解码工具ffmpeg 6
1.5 FFmpeg的播放器ffplay 9
1.6 FFmpeg的多媒体分析器ffprobe 9
1.7 FFmpeg编译 10
1.7.1 FFmpeg Windows平台编译 11
1.7.2 FFmpeg Linux平台编译 12
1.7.3 FFmpeg OS X平台编译 13
1.8 FFmpeg 编码支持与定制 15
1.8.1 FFmpeg 的编码器支持 20
1.8.2 FFmpeg 的解码器支持 21
1.8.3 FFmpeg 的复用(Muxing)支持 23
1.8.4 FFmpeg的解复用(Demuxing)支持 24
1.8.5 FFmpeg 的通信协议支持 25
1.9小结 25
第2章 FFmpeg工具使用基础 26
2.1 ffmpeg 常用命令 26
2.1.1 ffmpeg 的封装转换 31
2.1.2 ffmpeg 的编转码 32
2.1.3 ffmpeg 的基本编转码原理 33
2.2 ffprobe 常用命令 34
ffprobe 常用参数 34
2.3 ffplay 常用命令 42
2.3.1 ffplay 常用参数 42
2.3.2 ffplay高级参数 45
2.3.3 ffplay的数据可视化分析应用 48
2.4 小结 50
第3章 FFmpeg 转封装 51
3.1 视频文件转MP4格式 51
3.1.1 MP4格式标准介绍 51
3.1.2 MP4分析工具 65
3.1.3 MP4在ffmpeg中的Demuxer 68
3.1.4 MP4在ffmpeg中的Muxer 68
3.2 视频文件转FLV 72
3.2.1 FLV 文件标准介绍 72
3.2.2 FFmpeg转FLV参数说明 76
3.2.3 FFmpeg文件转FLV举例 77
3.2.4 FFmpeg生成带关键索引的FLV 78
3.2.5 FLV文件格式分析工具 79
3.3 视频文件转M3U8 80
3.3.1 M3U8格式标准介绍 80
3.3.2 FFmpeg转HLS参数 82
3.3.3 FFmpeg转HLS举例说明 83
3.4 视频文件切片 89
3.4.1 FFmpeg切segment参数 90
3.4.2 FFmpeg切segment举例 91
3.4.3 FFmpeg使用ss与t参数进行切片 93
3.5 视频文件音视频流抽取 95
3.5.1 FFmpeg抽取音视频文件中的AAC音频流 95
3.5.2 FFmpeg抽取音视频文件中的H.264视频流 96
3.5.3 FFmpeg抽取音视频文件中的H.265数据 96
3.6 系统资源使用情况 97
3.7 小结 98
第4章 FFmpeg 转编码 99
4.1 FFmpeg 软编码H.264(AVC)与H.265(HEVC) 99
4.1.1 x264编码参数简介: 99
4.1.2 H.264(ISO14496b标准中的AVC)编码举例 100
4.2 FFmpeg 硬件编码H.264(AVC)与H.265(HEVC) 112
4.2.1 Nvidia GPU硬编解码 112
4.2.2 Intel QSV 硬编码 115
4.2.3 Raspberry Pi(树莓派)硬编码 118
4.2.4 OS X系统硬编解码 120
4.3 FFmpeg 输出MP3 122
4.3.1 MP3编码参数介绍 122
4.3.2 MP3的编码质量设置 122
4.3.3 平均码率码率ABR参数 124
4.4 FFmpeg 输出AAC 124
4.4.1 FFmpeg中的AAC编码器使用 125
4.4.2 FDK AAC第三方的AAC编解码Codec库 126
4.4.3 高质量AAC设置 127
4.4.4 AAC音频质量对比 128
4.5 系统资源使用情况 128
4.6 小结 129
第5章 FFmpeg 流媒体 130
5.1 FFmpeg 发布与录制RTMP流 130
5.1.1 RTMP参数说明 130
5.1.2 FFmpeg参数举例 131
5.2 FFmpeg 录制RTSP流 136
5.2.1 FFmpeg的RTSP参数介绍 136
5.2.2 FFmpeg的RTSP参数使用举例 137
5.3 FFmpeg 录制 HTTP 流 139
5.3.1 HTTP参数说明 140
5.3.2 HTTP参数举例 140
5.3.3 HTTP拉流录制 142
5.3.4 拉取HTTP协议中的流录制FLV 142
5.4 FFmpeg 录制/发布UDP / TCP流 142
5.4.1 TCP与UDP参数 142
5.4.2 TCP参数使用举例 143
5.4.3 TCP/UDP使用小结 147
5.5 FFmpeg 推多路流 147
5.5.1 管道方式输出多路流 148
5.5.2 tee封装格式输出 148
5.5.3 tee协议输出多路流 150
5.6 FFmpeg 生成HDS流 151
5.6.1 参数说明 151
5.6.2 HDS使用举例 151
5.7 FFmpeg 生成DASH流 153
5.7.1 参数介绍 153
5.7.2 参数举例 154
5.7 小结 155
第6章 FFmpeg 滤镜使用 156
6.1 FFmpeg 滤镜Filter图描述格式 156
6.1.1 FFmpeg滤镜Filter基本排列方式 156
6.1.2 FFmpeg滤镜Filter时间内置变量 156
6.2 FFmpeg 为视频加水印 157
6.2.1 文字水印示例 157
6.2.2 Movie图片水印 160
6.3 FFmpeg 生成画中画 162
6.4 FFmpeg 视频多宫格处理 164
6.5 FFmpeg 音频流滤镜操作 166
6.5.1 双声道合并单声道 166
6.5.2 双声道提取 167
6.5.3 双声道转双音频流 168
6.5.3 单声道转双声道 168
6.5.4 两个音频源合并双声道 169
6.5.5 多个音频合并为多声道 170
6.6 FFmpeg 音频音量探测 170
6.6.1 音频音量获得 171
6.6.2 绘制音频波形 171
6.7 FFmpeg 为视频加字幕 172
6.7.1 ASS字幕流写入视频流 172
6.7.2 ASS字幕流 173
6.8 FFmpeg 视频抠图合并 175
chromakey参数介绍 175
6.9 FFmpeg 3D 视频处理 176
6.9.1 stereo3d处理3D视频 177
6.9.2 3D图像转换举例 178
6.10 FFmpeg 定时视频截图 179
6.10.1 vframe参数截取一张图片 179
6.10.2 fps滤镜定时获得图片 180
6.11 FFmpeg 生成测试元数据 180
6.11.1 FFmpeg生成音频测试流 180
6.11.2 FFmpeg生成视频测试流 181
6.12 FFmpeg对音视频倍速处理 182
6.12.1 atempo音频倍速处理 182
6.12.2 setpts视频倍速处理 183
6.13 小结 185
第7章 FFmpeg采集设备 186
7.1 FFmpeg的Linux设备操作 186
7.1.1 Linux下查看设备列表 186
7.1.2 Linux采集设备fbdev参数说明 187
7.1.3 Linux采集设备fbdev使用举例 187
7.1.4 Linux采集设备v4l2参数说明 187
7.1.5 Linux采集设备v4l2使用举例 188
7.1.6 Linux采集设备x11grab参数说明 189
7.1.7 Linux采集设备x11grab使用举例 189
7.2 FFmpeg中OS X设备操作avfoundation 191
7.2.1 OS X下查看设备列表 191
7.2.2 OS X下设备采集举例 192
7.3 Windows下设备采集 195
7.3.1 FFmpeg使用dshow采集音视频设备 195
7.3.2 FFmpeg使用vfwcap采集视频设备 196
7.3.3 FFmpeg使用gdigrab采集窗口 197
7.4 小结 199
第二部分 FFmpeg的API接口使用篇 200
第8章 FFmpeg接口libavformat使用 201
8.1 视频流封装Muxing 201
8.2 文件解封装Demuxing 203
8.3 文件转封装 205
8.4 视频截取 208
8.5 avio内存数据操作 210
8.6 小结 212
第9章 FFmpeg接口libavcodec的使用 213
9.1 FFmpeg旧接口的使用 213
9.1.1 FFmpeg旧接口视频解码操作 213
9.1.2 FFmpeg旧接口视频编码操作 215
9.1.3 FFmpeg旧接口音频解码操作 218
9.1.4 FFmpeg旧接口音频编码操作 219
9.2 FFmpeg新接口使用 221
9.2.1 FFmpeg新编码接口音频编码 221
9.2.2 FFmpeg新解码接口音频解码 224
9.2.3 FFmpeg新编码接口视频编码 226
9.2.4 FFmpeg新解码接口视频解码 226
9.3 小结 227
第10章 FFmpeg接口libavfilter使用 228
10.1 filtergraph和filter简述 228
10.2 FFmpeg中预留的过滤器 228
10.2.1 音频过滤器 228
10.2.2 视频过滤器 231
10.3 libavfilter流程图 237
10.4 使用滤镜加LOGO操作 239
10.5 小结 241
|