FFmpeg 音视频开发基础与实战

副标题:无

作   者:殷汶杰

分类号:

ISBN:9787121425554

微信扫一扫,移动浏览光盘

简介

全书内容分为三部分,共15 章。第1~6 章为部分,主要讲解音视频开发的基础知识,简要介绍音视频技术的发展背景,以及主流的音视频压缩编码算法、音视频容器格式和网络流媒体协议等。第7~9章为第二部分,主要讲解命令行工具ffmpeg、ffprobe 和ffplay 的使用方法,包括如何使用这些工具进行视频播放、格式检测、编转码、格式转换和流媒体推拉流等操作;第10~15 章为第三部分,主要讲解基于FFmpeg SDK 的开发实战,主要介绍如何在工程中调用libavcodec 和libavformat 等库提供的接口实现音视频处理的相关功能。本书适合从事音视频编解码、多媒体应用开发和流媒体技术的初、中级开发者,以及各大院校学生阅读,也适合有一定经验的开发人员参考使用。

目录


部分 基础知识

第1 章 音视频技术概述 . 2

1.1 音视频信息与多媒体系统 2

1.1.1 信息传输系统的发展 . 2

1.1.2 信息时代的音视频技术 . 4

1.1.3 音视频技术的未来展望 . 5

1.2 典型的音视频与多媒体系统结构 6

1.2.1 视频点播 . 7

1.2.2 视频直播 . 8

1.2.3 安防监控 . 9

1.2.4 视频会议 . 9

第2 章 图像、像素与颜色空间 . 11

2.1 图像与像素 11

2.2 图像的位深与颜色空间 12

2.2.1 图像的位深 . 12

2.2.2 图像的颜色空间 . 14

2.3 图像压缩编码 15

2.3.1 图像压缩算法分类 . 16

2.3.2 图像压缩基本算法 . 16

2.3.3 常见的图像压缩编码格式 . 20

第3 章 视频压缩编码 22

3.1 视频压缩编码的基础知识 22

3.1.1 视频信息的数字化表示 . 22

3.1.2 常用的视频格式与分辨率 . 24

3.1.3 对视频数据压缩编码的原因 24

3.2 视频压缩编码标准的发展历程 24

3.3 视频压缩编码的基本原理 25

3.3.1 视频数据中的冗余信息 . 25

3.3.2 预测编码 . 26

3.3.3 变换编码 . 27

3.3.4 熵编码 . 28

3.4 视频编码标准H.264 . 28

3.4.1 H.264 简介 28

3.4.2 H.264 的框架 28

3.4.3 H.264 的基本算法 . 30

3.5 高效视频编码标准H.265 33

3.5.1 H.265 简介 33

3.5.2 H.265 的框架 33

3.5.3 H.265 的基本算法 . 35

第4 章 音频压缩编码 42

4.1 音频压缩编码的基础知识 42

4.1.1 声音信息的概念 . 42

4.1.2 声音信息的基本要素 . 42

4.2 音频信息采样与数字化 43

4.2.1 模拟音频 . 43

4.2.2 数字音频 . 44

4.2.3 采样和量化 . 44

4.3 脉冲编码调制 46

4.3.1 PCM 量化区间分割 46

4.3.2 PCM 量化编码规则 49

4.4 MP3 格式与MP3 编码标准 51

4.4.1 MP3 格式 . 52

4.4.2 MP3 编码标准 . 62

4.5 AAC 格式与AAC 编码标准 . 67

4.5.1 AAC 格式 67

4.5.2 AAC 编码标准 72

第5 章 音视频文件容器和封装格式 . 74

5.1 概述 74

5.2 FLV 格式 75

5.2.1 FLV 文件结构 . 75

5.2.2 FLV 文件头 . 76

5.2.3 FLV 标签 . 77

5.3 MPEG-TS 格式 84

5.3.1 信息包头 . 84

5.3.2 PES 包结构 . 85

5.3.3 PSI 结构 . 87

5.4 MP4 格式 . 88

5.4.1 MP4 格式简介 . 88

5.4.2 ISO 协议族 89

5.4.3 MP4 封装格式 . 89

5.4.4 Box 类型 90

5.4.5 MP4 文件结构 . 92

5.4.6 构建视频流的播放时间轴 . 98

第6 章 音视频流媒体协议 . 104

6.1 网络协议模型 105

6.1.1 ISO/OSI 模型结构 105

6.1.2 TCP/IP 模型结构 106

6.2 网络流媒体协议——RTMP 120

6.2.1 RTMP 的概念 120

6.2.2 RTMP 分块与块流 121

6.2.3 RTMP 信息格式 126

6.2.4 RTMP 信息与命令 129

6.3 网络流媒体协议——HLS 协议 136

6.3.1 HLS 协议的概念 . 136

6.3.2 HLS 直播流媒体系统结构 . 136

6.3.3 HLS 索引文件格式 . 138

第二部分 命令行工具

第7 章 FFmpeg 的基本操作 144

7.1 FFmpeg 概述 144

7.1.1 各个编译类型的区别 . 145

7.1.2 编译FFmpeg 源代码 148

7.2 ffplay 的基本使用方法 155

7.2.1 显示ffplay 版本 155

7.2.2 显示编译选项 . 156

7.2.3 设置日志级别 . 156

7.2.4 全屏播放 . 158

7.2.5 指定输入视频的宽、高和帧率 158

7.2.6 禁用音频流、视频流和字幕流 158

7.2.7 指定播放的起始时间和时长 159

7.2.8 指定播放音量 . 159

7.2.9 设置播放窗口 . 159

7.3 ffprobe 的基本使用方法 159

7.3.1 显示详细的封装格式信息 . 160

7.3.2 显示每一路媒体流信息 . 161

7.3.3 显示每一个码流包的信息 . 164

7.3.4 显示媒体流和码流包的负载信息 165

7.3.5 显示每一帧图像的信息 . 167

7.3.6 指定检测信息的输出格式 . 169

7.4 ffmpeg 的基本使用方法 175

7.4.1 显示版本和编译配置信息 . 176

7.4.2 显示支持的解复用器格式 . 177

7.4.3 显示支持的复用器格式 . 179

7.4.4 显示支持的所有输入格式和输出格式 181

7.4.5 显示支持的解码器 . 183

7.4.6 显示支持的编码器 . 184

7.4.7 显示支持的媒体协议 . 186

7.4.8 显示支持的硬件加速框架 . 188

7.4.9 ffmpeg 封装格式转换 . 188

7.4.10 视频的解码和编码 . 193

7.4.11 从视频中截取图像 206

7.4.12 ffmpeg 视频转码 . 207

第8 章 滤镜图 . 209

8.1 ffmpeg 音视频滤镜 209

8.1.1 简单滤镜图 . 209

8.1.2 复合滤镜图 . 210

8.1.3 ffmpeg 支持的滤镜列表 . 211

8.2 简单滤镜图的应用 212

8.2.1 常用的视频编辑简单滤镜图 212

8.2.2 常用的音频编辑简单滤镜图 227

8.3 复合滤镜图的应用 230

8.3.1 常用的视频编辑复合滤镜图 230

8.3.2 常用的音频编辑复合滤镜图 234

第9 章 流媒体应用 236

9.1 构建SRS 流媒体服务 . 236

9.1.1 部署RTMP 流媒体服务 . 238

9.1.2 部署HLS 流媒体服务 240

9.1.3 部署HTTP-FLV 流媒体服务 . 241

9.2 构建Nginx RTMP 流媒体服务 . 241

9.2.1 Nginx 的编译和部署 242

9.2.2 Nginx 的流媒体模块nginx-rtmp-module 246

第三部分 开发实战

第10 章 FFmpeg SDK 的使用. 254

10.1 使用CMake 构建工程 . 255

10.1.1 使用CMake 构建Hello World 工程 255

10.1.2 在工程中编译并输出多个文件 257

10.1.3 在工程中添加头文件和源文件目录 259

10.1.4 在工程中引入动态库 . 262

10.2 FFmpeg SDK 基本使用方法示例:获取目录下的文件信息 . 264

10.2.1 显示指定目录信息 . 264

10.2.2 解析API 和结构体 . 266

第11 章 使用FFmpeg SDK 进行视频编解码 269

11.1 libavcodec 视频编码 269

11.1.1 主函数与数据I/O 实现 269

11.1.2 视频编码器初始化 272

11.1.3 编码循环体 284

11.1.4 关闭编码器 289

11.1.5 FFmpeg 视频编码延迟分析 . 290

11.2 libavcodec 视频解码 294

11.2.1 主函数实现 294

11.2.2 视频解码器初始化 295

11.2.3 解码循环体 297

11.2.4 关闭解码器 304

第12 章 使用FFmpeg SDK 进行音频编解码 306

12.1 libavcodec 音频编码 306

12.1.1 主函数实现 . 306

12.1.2 音频编码器初始化 . 307

12.1.3 编码循环体 . 310

12.1.4 关闭编码器 . 313

12.2 libavcodec 音频解码 315

12.2.1 主函数实现 . 315

12.2.2 音频解码器初始化 . 316

12.2.3 解码循环体 . 318

12.2.4 关闭解码器 . 324

第13 章 使用FFmpeg SDK 进行音视频文件的解封装与封装 . 326

13.1 音视频文件的解封装 326

13.1.1 主函数实现 . 326

13.1.2 解复用器初始化 . 327

13.1.3 循环读取码流包数据 . 335

13.1.4 释放解复用器和解码器 . 338

13.1.5 主函数的整体实现 . 339

13.2 音频流与视频流文件的封装 340

13.2.1 主函数实现 . 340

13.2.2 音视频流复用器的初始化 341

13.2.3 复用音频流和视频流 . 348

13.2.4 释放复用器实例 . 353

第14 章 使用FFmpeg SDK 添加视频滤镜和音频滤镜 355

14.1 视频滤镜 355

14.1.1 主函数实现 . 355

14.1.2 视频滤镜初始化 . 356

14.1.3 循环编辑视频帧 . 365

14.1.4 销毁视频滤镜 . 368

14.2 音频滤镜 370

14.2.1 主函数框架 . 370

14.2.2 音频滤镜初始化 . 371

14.2.3 循环编辑音频帧 . 380

14.2.4 销毁音频滤镜 . 381

第15 章 使用FFmpeg SDK 进行视频图像转换与音频重采样 . 383

15.1 视频图像转换 383

15.1.1 主函数实现 . 383

15.1.2 视频格式转换初始化 . 384

15.1.3 视频的图像帧循环转换 . 388

15.1.4 视频格式转换结构的销毁和释放 390

15.2 音频重采样 391

15.2.1 主函数实现 . 392

15.2.2 音频重采样初始化 . 392

15.2.3 对音频帧循环重采样 . 397

15.2.4 音频重采样结构的销毁和释放 400


已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

FFmpeg 音视频开发基础与实战
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    loading icon