书籍详情
《RTFFmpeg音开发基础与实战殷汶杰系统系统开》[25M]百度网盘|亲测有效|pdf下载
  • RTFFmpeg音开发基础与实战殷汶杰系统系统开

  • 出版社:复朗旗舰店
  • 热度:12523
  • 上架时间:2024-06-30 09:38:03
  • 价格:0.0
书籍下载
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

  商品基本信息,请以下列介绍为准
商品名称:FFmpeg音开发基础与实战
作者:殷汶杰
定价:108.0
出版社:电子工业出版社
出版日期:2021-11-01
ISBN:9787121425554
印次:1
版次:null
装帧:
开本:16开

  内容简介
前言 多年来,音、多媒体技术一直以各种各样的形式对社会产生深刻影响,从专业领域的广播电视到消费领域的个人数字摄像机等这些都已融入人们生活的方方面面入互联网时代,在线、短等娱乐场景,以及远程会议、远程等专业应一步扩展了音技术的应用领域,使其与现代文明的联系更加密不可分。 音技术推动泛娱乐行业高速发展 从21 世纪的初几年开始,在线产业便渐渐开始兴起。随着宽带网逐渐走入寻常百姓家,消费者们无须再忍受拨号网络缓慢的传输速度,部分知户网站(如搜狐等)也逐渐开始涉足在线领域。此后,如乐视网、优酷网、土豆网、PPLive、PPS、酷6 等在线网站层出不穷,再加上背靠互联网巨头公司的腾讯、爱奇艺等,国内在线行业呈现百花齐放的场景。然而,随着版权和带宽等成本的日渐高涨,多台逐渐沉寂,终形成了“爱(奇异)优(酷)腾(讯)”三足鼎立的格局。此外,如Acfun 和bilibili 等二次元主题网站和芒果TV 等以综艺为台也在各自的领域逐渐扩大了影响力。 在网台的发展起起伏伏之际,另一种在线娱乐的形态——网络互动直播开始异军突起。直播本是历史的应用之一,多年以来广电领域的数字电视广播、闭路电视系统一直是直播系统的典型应用入互联网时代,直播的整体形态与产品细节与传统的闭路电视系统相比发生了翻天覆地的变化,典型的升级是从主播到观众的单方面放送,转变为主播与观众的双向互动,如通过弹幕或连麦等方式。网络互动直播从萌芽到兴起,到为繁荣的“千播大战”,直到终经历多次的兼并和淘汰,其中的幸存者已经。当前仍较为活跃的直台有头部的斗鱼、虎牙和主要用于带货的直播和直播等。 除中、长外,随着以智能手机为代表的移动智能设备的日渐普及,短作为一项新的业务形态逐渐占据了消费者的碎片时间。通常认为短起源自本世纪早期的微电影、网络短片和校园DV 等形态,伴随着各种UGC台的蓬勃发展而越发兴盛。但由台的定位、资本及政策等的多重影响,多台在昙花一现后迅速消失在市场中,甚腾讯旗下的微视也难逃被雪藏多年的命运。在智能移动设入人们的生活后,通过移动设行“短、快”风格的内容分享燃了短行业的星星之火,低成本、快节奏的短拍摄成为人们分享生活和观点的重要手段。今天,以和为代表的移动台凭借其丰富的内容和对用户心理与喜好的研究在用户中产生了巨大影响,成为当前基于音的泛娱乐场景中新的一极。 音技术给商务与办公领域带来新生命 目前,远程办公已成为必然选择。当前市场上多家科技企业发布了多款远程办公产品软件或一体式解决方案,典型的有Microsoft 的Teams、Google 的Google Meet、腾讯的腾讯会议、字节跳动的飞书、的钉钉和Zoom 的同名产品Zoom 等。这些产品的共同特点是基于互联网、云计算等技术,集成了电子邮件、电子白板、远程连接与桌面共享等模块,旨在为异地办公的员工和团队提供强大而可靠的交流和共享服务。构建一个稳定而完备的远程办公系统需要多个不同的系统精密配合,而实时音通信可谓其中技术为复杂、挑战的模块之一,其稳定和能直接决定了系统整体的能与用户体验。目前主流的实时音通信解决方案主要基于WebRTC 标准。与传统的RTMP CDN 系统相比,基于WebRTC 的方案延迟更低,卡顿情况更少,且支持直接接入浏览行推流与播放。 音技术具有广阔的发展前景和学 从上述音应用的发展历史我们可以看出,音技术始终在行业内占据重要地位。从在线网站到互动直播,再到短与实时音通信,当音领域在某一个行业发展到,甚随后开始逐渐衰落时,是有另一个风口异军突起接棒。究其原因在于,音由于具有可以生动形象地携带大量信息,且易于被人们快速理解的特,已成为信息传输效率的通信媒介。几乎所有的商业形态都可以通过音技术实现信息的快速理解与交换,实现效率的倍增。因此年来无论社会如何发展变化,音领域依然以朝阳产业的面貌蓬勃发展。 另一方面,音技术是软件编程的一项高阶技术,具有较高的准入门槛。一名的音工程师应当从原理到实践做到融会贯通,少需要掌握以下领域的知识与技能:数学、信息与编码理论、计算机系统原理、算、编程语言(如C 、Java、Go 等)、网络开发、台软件开发(如移动端、服务端和客户端)和系统架构设计等。因此,音技术的学比普通的软件开发之路更加艰难、漫长。而另一方面,这也成为音领域技术人员好的护城河,为行业了深入沉淀的机会。 本书的价值 音技术并不是一项可以轻松掌握的技术,为了解决这个问题,许多天才程序员贡献了多项开源工程对音开发的底层技行了封装与集成,以提升整体的开发效率,FFmpeg便是其中的典型。作为强大的音开源项目之一,FFmpeg 提供了音的编码与解码、封装与解封装、推拉流和音数据编辑等操作,屏蔽了许多底层技术细节,使得可以将更多的精力专注在业务逻辑的实现上,大幅提升了开发如播放器、推流、音编辑等客户端或SDK 等产品的效率。 尽管如此,对初学者来说,FFmpeg 提供的命令行工具和SDK 的使用方法仍然较为困难。除音的基本概念外,繁冗复杂的命令行参数与API 常常让初学者无从下手,除官方提外,几乎没有完备的技术资料可供参考。本书系统地讲解了音领域的基础知识,并由浅入深地介绍了FFmpeg 的基本使用方法,笔者希望本书的面世可一步降低音开发的入门门槛,让更多有志于从事音开发的同学可以为整个行业添砖加瓦。 本书的内容及学 本书内容分为三部分,各部分之间的内容相互关联但又相对独立,读者可以根据自身的需求按顺序阅读或选择学 第1~6 章为本书的部分,主要讲解音技术的基础知识括音编码与解码标准、媒体容器的封装格式和网络流媒体协议简介。建议对音技术不够熟悉的读者从该部分开始阅读,有基础的读者可以选择泛读或跳过该部分。 第7~9 章为本书的部分,主要讲解命令行工具ffmpeg、ffprobe 和ffy 的主要使用方法。命令行工具在搭建测试环境、构建测例和排查系统Bug 时常常起到重要作用。如果想要在实际工作中有效提升工作效率,那么应熟练掌握 FFmpeg 命令行工具的使用方法。 第10~15 章为本书的第三部分,主要讲解如何使用libavcodec、libavformat 等FFmpegSDK行编码与解码、封装与解封装,以及媒体信息编辑等音基能开发的方法。在实际的企业级音项目中,通常采用调用FFmpeg 相关的API 而非使用命令行工具的方式实现基本能,因此该部分内容具有较强的实践所有读者阅读并多加实践。此部分的代码实现基本来自FFmpeg 官方文档中的示例代码,笔者在此基础行了的改编。书中代码整体上遵循了示例代码的指导,稳定较强,且更易于理解。 勘误与 由于本书内容较为繁杂,且笔者在撰写稿件的同时仍承担繁重的一线开发任务,因此书中极有可能出现部分疏漏或错误,望广大读者阅读后不吝指正,提出宝贵的意见或建议,联系邮箱:yinwenjie-1@163.com。 致谢 自本书初步策划开始,截今日已一年有余。这是我次独立撰写书稿,其间所经历的困难甚痛苦不言而喻。终初稿得以完成,首先必须感谢我的伴侣,在本书定稿的过程中,你完成了身份从女朋友到妻子的升级,没有你的支持,本书断无问世的可能。此外还必须感谢我的父母,你们的关爱、期望与督促,也是本书问世的源动力之一。 感谢博文视点的编辑老师,你们的专业程度一直令我叹服。没有你们从开始到终的指导和帮助,本书是无法完成的。 感谢各个技术交流群中的同行与朋友,以及我的博客与课程的读者,有了你们的支持,我才克服了所经历的困难,将本书带到你们的面前。 希望在不久的将来,能有更多更有价值的内容贡献给大家,谢谢! 殷汶杰 2021 年6 月于上海

  目录
部分 基础知识
第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 ffy 的基本使用方法 ...................................................................................... 155
7.2.1 显示ffy 版本 ...................................................................................... 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
目录 ? XIII
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 是?领域中重量级的开源项?,本书以FFmpeg官?提供的代码实例为基础,对FFmpeg相关知行了全?、深?地讲解,可有效帮助读者获得基于FFmpeg的?开发基础知识和技能。 本书如下: 1.系统地讲解音领域的基础知识,如音编解码标准、媒体容器的封装格式和网络流媒体协议。 2.由浅入深地介绍FFmpeg 的基本使用方法括命令行工具ffmpeg、ffprobe 和ffy 的主要 使用方法。 3.用6章实战讲解如何使用libavcodec、libavformat 等FFmpegSDK行音基能的开发,可有效提升项目实战能力。

  媒体
FFmpeg 是领域中重量级的开源项? 书以FFmpeg官?提供的代码实例为基础,对FFmpeg相关知行了全、深 地讲解,可有效帮助读者获得基于FFmpeg的开发基础知识和技能。
本书如下:
1.系统地讲解音领域的基础知识,如音编解码标准、媒体容器的封装格式和网络流媒体协议。
2.由浅入深地介绍FFmpeg 的基本使用方法括命令行工具ffmpeg、ffprobe 和ffy 的主要
使用方法。
3.用6章实战讲解如何使用libavcodec、libavformat 等FFmpegSDK行音能的开发,可有效提升项目实战能力。

对人类而言,是自然的信息表达与交互方式,也是过去五年发展十分迅猛的应用技术之 一。本书深入浅出、简明实用,可为相关产业的快速发展、人才培养提供支持。
——杨帆 商汤科技联合创始人、裁

FFmpeg 是音领域中重量级的开源项目,值得所有音初学者研究和学书以FFmpeg官 方提供的代码实例为基础,辅以全面、深入的知识讲解,可有效帮助读者获得基于FFmpeg的音开发基础知识和技能,为读者在音行业的深耕和发展奠定基础。
——卢俊 字节跳动 RTC音架构师

伴随4G移动网络基建的逐步成熟,以音为主要介质的各类互联网业务逐渐发展壮大。作者很 早就表达了想要通过自己的钻研,以录课、出书等形式普及音技术知识。在工作期间,作者 深度参与音业务建设与开源建设。数年后其仍不忘初心,终成此书,令人钦佩。希望此书能 盛装作者赤诚之心与音技术之美,以飨读者。
——张骏 某头部互联网企业资深开监

  作者简介
殷汶杰,2013年毕业于上海大学信息与通信工程学院,主要研究方向为压缩编码、流媒体技术,其间发表了多篇高学术论文。具有多家一线互联网上市公司、世界五百强企业与行业独角兽公司的核心开发工作经验申请了多项专利(其中一项国际专利)。发表了数百篇技术博客,并发布了多个线上教学课程,在行业内具有较强的技术影响力。