深入理解FFmpeg

深入理解FFmpeg
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
2023-11
版次: 1
ISBN: 9787115621368
定价: 139.80
装帧: 其他
开本: 其他
纸张: 胶版纸
页数: 530页
字数: 920千字
3人买过
  • 本书详细介绍了开源音视频处理软件FFmpeg的使用,按照所讲述的内容及读者的不同层次,本书划分为上下两篇。上篇为基础与参数详解,介绍了FFmpeg的基本组成部分、工具使用,以及封装、转码、流媒体、滤镜和设备操作。下篇为API使用及开发,介绍了FFmpeg封装、编解码和滤镜部分的API使用操作,相关操作均以实例方式进行说明,包括新旧API的操作方法和异同,并给出了大量的API使用、自定义功能模块、基于FFmpeg的API开发自己的播放器的示例,以及其在实际开源软件中的应用等。

      本书不仅适合音视频流媒体处理的研发人员、对音视频技术应用和实时音视频通信感兴趣的技术人员,还适合高等院校计算机相关专业的学生阅读。 刘歧 快手音视频首席架构师、FFmpeg官方源代码活跃维护者和推荐顾问、FFmpeg GSoC Mentor、腾讯云TVP,擅长音视频流媒体技术、分布式流媒体系统设计和流媒体CDN系统开发,个人技术兴趣领域广泛,包括音视频技术、操作系统、分布式系统、通信技术、嵌入式技术等,目前在快手负责音视频基础技术架构升级与优化。 赵军 腾讯专家工程师、开源爱好者。2018年成为FFmpeg maintainer,目前在腾讯云音视频负责视频云的编码、系统优化、媒体处理框架相关工作,曾在Intel DCG/NPG 负责基于FFmpeg以及Intel平台上的视频编码/解码/转码、视频后处理、视频分析的硬件加速等工作。 杜金房 烟台小樱桃科技创始人、腾讯云TVP、FreeSWITCH中文社区创始人,为FreeSWITCH开源项目贡献了大量代码,包括其中的FFmpeg模块(mod_av)、WebRTC和视频会议MCU代码等,著有《FreeSWITCH权威指南》《Kamailio实战》。 赵文杰 好未来教育集团资深架构师、开源流媒体系统SRS 作者成员,擅长音视频编解码技术、流媒体直播技术、播放器开发技术、客户端技术等,已获得多篇音视频流媒体相关专利,曾任职于北京蓝汛、海尔、搜狐畅游等公司。 宋韶颍 快手音视频SDK工程师,擅长音视频编解码技术、流媒体直播技术,深度使用FFmpeg落地多个分布式转码系统、流媒体CDN系统、音视频云编辑系统,曾任职于北京蓝汛、金山云等公司。 上篇 基础与参数详解

    第 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的使用,按照所讲述的内容及读者的不同层次,本书划分为上下两篇。上篇为基础与参数详解,介绍了FFmpeg的基本组成部分、工具使用,以及封装、转码、流媒体、滤镜和设备操作。下篇为API使用及开发,介绍了FFmpeg封装、编解码和滤镜部分的API使用操作,相关操作均以实例方式进行说明,包括新旧API的操作方法和异同,并给出了大量的API使用、自定义功能模块、基于FFmpeg的API开发自己的播放器的示例,以及其在实际开源软件中的应用等。

      本书不仅适合音视频流媒体处理的研发人员、对音视频技术应用和实时音视频通信感兴趣的技术人员,还适合高等院校计算机相关专业的学生阅读。
  • 作者简介:
    刘歧 快手音视频首席架构师、FFmpeg官方源代码活跃维护者和推荐顾问、FFmpeg GSoC Mentor、腾讯云TVP,擅长音视频流媒体技术、分布式流媒体系统设计和流媒体CDN系统开发,个人技术兴趣领域广泛,包括音视频技术、操作系统、分布式系统、通信技术、嵌入式技术等,目前在快手负责音视频基础技术架构升级与优化。 赵军 腾讯专家工程师、开源爱好者。2018年成为FFmpeg maintainer,目前在腾讯云音视频负责视频云的编码、系统优化、媒体处理框架相关工作,曾在Intel DCG/NPG 负责基于FFmpeg以及Intel平台上的视频编码/解码/转码、视频后处理、视频分析的硬件加速等工作。 杜金房 烟台小樱桃科技创始人、腾讯云TVP、FreeSWITCH中文社区创始人,为FreeSWITCH开源项目贡献了大量代码,包括其中的FFmpeg模块(mod_av)、WebRTC和视频会议MCU代码等,著有《FreeSWITCH权威指南》《Kamailio实战》。 赵文杰 好未来教育集团资深架构师、开源流媒体系统SRS 作者成员,擅长音视频编解码技术、流媒体直播技术、播放器开发技术、客户端技术等,已获得多篇音视频流媒体相关专利,曾任职于北京蓝汛、海尔、搜狐畅游等公司。 宋韶颍 快手音视频SDK工程师,擅长音视频编解码技术、流媒体直播技术,深度使用FFmpeg落地多个分布式转码系统、流媒体CDN系统、音视频云编辑系统,曾任职于北京蓝汛、金山云等公司。
  • 目录:
    上篇 基础与参数详解

    第 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
深入理解移动互联网
吴功宜 吴英 编著
深入理解FFmpeg
深入实施“四个育人”,彰显本科人才培养特色——云南大学本科教育改革与创新优秀论文集
主编唐旭光
深入理解FFmpeg
深入浅出TCP/IP(图解·全彩版)
[日]宫田宽士
深入理解FFmpeg
深入浅出C语言程序设计(第3版·微课版)
李俊·c;强振平;荣剑;张晴晖;赵毅力;钟丽辉
深入理解FFmpeg
深入浅出C#(视频教学版)
赵云
深入理解FFmpeg
深入实践Kotlin元编程
霍丙乾 著
深入理解FFmpeg
深入北方的小路(布克奖震撼杰作。人生在世,行走于地狱屋顶,凝望花朵。余华力荐“了不起的小说”!)
[澳]理查德·弗兰纳根 著;新经典 出品
深入理解FFmpeg
深入学习习近平关于科技创新的重要论述
科学技术部编写组 著
深入理解FFmpeg
深入浅出IoT:完整项目通关实战
[英]吉姆·贝内特(Jim Bennett) 著;柴火创客空间 译;[美]珍·福克斯(Jen Fox);[美]珍·卢珀(Jen Looper)
深入理解FFmpeg
深入浅出SSD:固态存储核心技术、原理与实战 第2版
SSDFans 胡波 石亮 岑彪
深入理解FFmpeg
深入地心 少儿科普 新华正版
英国尤斯伯恩出版公司
深入理解FFmpeg
深入人心:数字产品设计的底层逻辑
林婕