基本信息
作者: 刘歧 赵文杰
丛书名: 电子与嵌入式系统设计丛书
出版社:机械工业出版社
ISBN:9787111592204
上架时间:2018-3-23
出版日期:2018 年3月
开本:16开
版次:1-1
目录
本书赞誉
推荐序一
推荐序二
推荐序三
前言
第一部分 FFmpeg的命令行使用篇
第1章 FFmpeg简介 2
1.1 FFmpeg的定义 2
1.2 FFmpeg的历史 2
1.3 FFmpeg的基本组成 3
1.4 FFmpeg的编解码工具ffmpeg 6
1.5 FFmpeg的播放器ffplay 9
1.6 FFmpeg的多媒体分析器ffprobe 9
1.7 FFmpeg编译 11
1.7.1 FFmpeg之Windows平台编译 11
1.7.2 FFmpeg之Linux平台编译 13
1.7.3 FFmpeg之OS X平台编译 15
1.8 FFmpeg编码支持与定制 16
1.8.1 FFmpeg的编码器支持 24
1.8.2 FFmpeg的解码器支持 25
1.8.3 FFmpeg的封装支持 27
1.8.4 FFmpeg的解封装支持 28
1.8.5 FFmpeg的通信协议支持 29
1.9 小结 29
第2章 FFmpeg工具使用基础 30
2.1 ffmpeg常用命令 30
2.1.1 ffmpeg的封装转换 37
2.1.2 ffmpeg的转码参数 38
2.1.3 ffmpeg的基本转码原理 38
2.2 ffprobe常用命令 40
2.3 ffplay常用命令 50
2.3.1 ffplay常用参数 50
2.3.2 ffplay高级参数 53
2.3.3 ffplay的数据可视化分析应用 57
2.4 小结 59
第3章 FFmpeg 转封装 60
3.1 音视频文件转MP4格式 60
3.1.1 MP4格式标准介绍 61
3.1.2 MP4分析工具 76
3.1.3 MP4在FFmpeg中的Demuxer 79
3.1.4 MP4在FFmpeg中的Muxer 80
3.2 视频文件转FLV 84
3.2.1 FLV格式标准介绍 84
3.2.2 FFmpeg转FLV参数 89
3.2.3 FFmpeg文件转FLV举例 89
3.2.4 FFmpeg生成带关键索引的FLV 91
3.2.5 FLV文件格式分析工具 91
3.3 视频文件转M3U8 93
3.3.1 M3U8格式标准介绍 93
3.3.2 FFmpeg转HLS参数 95
3.3.3 FFmpeg转HLS举例 96
3.4 视频文件切片 105
3.4.1 FFmpeg切片segment参数 105
3.4.2 FFmpeg切片segment举例 106
3.4.3 FFmpeg使用ss与t参数进行切片 110
3.5 音视频文件音视频流抽取 111
3.5.1 FFmpeg抽取音视频文件中的AAC音频流 111
3.5.2 FFmpeg抽取音视频文件中的H.264视频流 112
3.5.3 FFmpeg抽取音视频文件中的H.265数据 113
3.6 系统资源使用情况 114
3.7 小结 115
第4章 FFmpeg转码 116
4.1 FFmpeg软编码H.264与H.265 116
4.1.1 x264编码参数简介 117
4.1.2 H.264编码举例 118
4.2 FFmpeg硬编解码 130
4.2.1 Nvidia GPU硬编解码 130
4.2.2 Intel QSV硬编码 133
4.2.3 树莓派硬编码 137
4.2.4 OS X系统硬编解码 139
4.3 FFmpeg输出MP3 141
4.3.1 MP3编码参数介绍 141
4.3.2 MP3的编码质量设置 142
4.3.3 平均码率编码参数ABR 144
4.4 FFmpeg输出AAC 145
4.4.1 FFmpeg中的AAC编码器使用 145
4.4.2 FDK AAC第三方的AAC编解码Codec库 146
4.4.3 高质量AAC设置 148
4.4.4 AAC音频质量对比 149
4.5 系统资源使用情况 149
4.6 小结 150
第5章 FFmpeg流媒体 151
5.1 FFmpeg发布与录制RTMP流 151
5.1.1 RTMP参数说明 152
5.1.2 RTMP参数举例 152
5.2 FFmpeg录制RTSP流 159
5.2.1 RTSP参数说明 159
5.2.2 RTSP参数使用举例 159
5.3 FFmpeg录制HTTP流 163
5.3.1 HTTP参数说明 163
5.3.2 HTTP参数使用举例 163
5.3.3 HTTP拉流录制 166
5.3.4 拉取HTTP中的流录制FLV 166
5.4 FFmpeg录制和发布UDP / TCP流 166
5.4.1 TCP与UDP参数说明 166
5.4.2 TCP参数使用举例 167
5.4.3 TCP/UDP使用小结 172
5.5 FFmpeg推多路流 173
5.5.1 管道方式输出多路流 173
5.5.2 tee封装格式输出多路流 174
5.5.3 tee协议输出多路流 175
5.6 FFmpeg生成HDS流 176
5.6.1 HDS参数说明 177
5.6.2 HDS使用举例 177
5.7 FFmpeg生成DASH流 179
5.7.1 DASH参数说明 180
5.7.2 DASH参数使用举例 180
5.8 小结 181
第6章 FFmpeg滤镜使用 182
6.1 FFmpeg滤镜Filter描述格式 182
6.1.1 FFmpeg滤镜Filter的参数排列方式 182
6.1.2 FFmpeg滤镜Filter时间内置变量 183
6.2 FFmpeg为视频加水印 183
6.2.1 文字水印 183
6.2.2 图片水印 187
6.3 FFmpeg生成画中画 189
6.4 FFmpeg视频多宫格处理 192
6.5 FFmpeg音频流滤镜操作 193
6.5.1 双声道合并单声道 193
6.5.2 双声道提取 194
6.5.3 双声道转双音频流 195
6.5.4 单声道转双声道 196
6.5.5 两个音频源合并双声道 197
6.5.6 多个音频合并为多声道 198
6.6 FFmpeg音频音量探测 199
6.6.1 音频音量获得 199
6.6.2 绘制音频波形 200
6.7 FFmpeg为视频加字幕 201
6.7.1 ASS字幕流写入视频流 201
6.7.2 ASS字幕流写入封装容器 202
6.8 FFmpeg视频抠图合并 205
6.9 FFmpeg 3D视频处理 206
6.9.1 stereo3d处理3D视频 206
6.9.2 3D图像转换举例 207
6.10 FFmpeg定时视频截图 208
6.10.1 vframe参数截取一张图片 208
6.10.2 fps滤镜定时获得图片 209
6.11 FFmpeg生成测试元数据 210
6.11.1 FFmpeg生成音频测试流 210
6.11.2 FFmpeg生成视频测试流 211
6.12 FFmpeg对音视频倍速处理 212
6.12.1 atempo音频倍速处理 212
6.12.2 setpts视频倍速处理 213
6.13 小结 215
第7章 FFmpeg采集设备 216
7.1 FFmpeg中Linux设备操作 216
7.1.1 Linux下查看设备列表 216
7.1.2 Linux采集设备fbdev参数说明 217
7.1.3 Linux采集设备fbdev使用举例 217
7.1.4 Linux采集设备v4l2参数说明 218
7.1.5 Linux采集设备v4l2使用举例 218
7.1.6 Linux采集设备x11grab参数说明 220
7.1.7 Linux采集设备x11grab使用举例 220
7.2 FFmpeg中OS X设备操作 222
7.2.1 OS X下查看设备列表 223
7.2.2 OS X下设备采集举例 223
7.3 FFmpeg中Windows设备操作 227
7.3.1 FFmpeg使用dshow采集音视频设备 227
7.3.2 FFmpeg使用vfwcap采集视频设备 228
7.3.3 FFmpeg使用gdigrab采集窗口 229
7.4 小结 230
第二部分 FFmpeg的API使用篇
第8章 FFmpeg接口libavformat的使用 232
8.1 音视频流封装 232
8.2 音视频文件解封装 235
8.3 音视频文件转封装 237
8.4 视频截取 240
8.5 avio内存数据操作 242
8.6 小结 244
第9章 FFmpeg接口libavcodec的使用 245
9.1 FFmpeg旧接口的使用 245
9.1.1 FFmpeg旧接口视频解码 245
9.1.2 FFmpeg旧接口视频编码 248
9.1.3 FFmpeg旧接口音频解码 251
9.1.4 FFmpeg旧接口音频编码 252
9.2 FFmpeg新接口的使用 254
9.2.1 FFmpeg新接口音频编码 255
9.2.2 FFmpeg新接口音频解码 257
9.2.3 FFmpeg新接口视频编码 260
9.2.4 FFmpeg新接口视频解码 260
9.3 小结 261
第10章 FFmpeg接口libavfilter的使用 262
10.1 filtergraph和filter简述 262
10.2 FFmpeg中预留的滤镜 263
10.2.1 音频滤镜 263
10.2.2 视频滤镜 265
10.3 avfilter流程图 271
10.4 使用滤镜加LOGO操作 272
10.5 小结 275
...
基本信息
- 作者:
- 出版社:
- ISBN:9787111585824
- 上架时间:2017-12-13
- 出版日期:2018 年1月
- 开本:16开
- 版次:1-1
- 所属分类:
目录
推荐序一
推荐序二
前言
第1章 音视频基础概念 1
1.1 声音的物理性质 1
1.1.1 声音是波 1
1.1.2 声波的三要素 2
1.1.3 声音的传播介质 3
1.1.4 回声 3
1.1.5 共鸣 4
1.2 数字音频 4
1.3 音频编码 6
1.4 图像的物理现象 7
1.5 图像的数值表示 8
1.5.1 RGB表示方式 8
1.5.2 YUV表示方式 9
1.5.3 YUV和RGB的转化 10
1.6 视频的编码方式 10
1.6.1 视频编码 10
1.6.2 编码概念 11
前言
为什么要写这本书
整个音视频领域的架构以及开发已经演进了很长时间,从开始的广电领域,到PC端的音视频领域,再到本书所介绍的移动端的音视频领域。尤其在这几年中,移动端音视频领域架构的变化是巨大的。在移动互联网的发展热潮中,我有幸从事了音视频领域的设计与开发,并且就职于时尚的手机KTV——唱吧,这使得我开发出来的东西能够服务于几亿用户。对于音视频的移动端的应用,不论是开发还是使用,在近两年都达到了一个高峰,而作为一名工程师,如何高效地开发出一个音视频App,是一件非常困难的事情,特别是对于不太了解音视频概念的工程师。我从事软件开发已有7年多的时间,接触音视频领域也已经有5年多,在整个开发过程中,不同的时间段会遇到不同的挑战,尤其是在开始涉足音视频领域的时候,真可谓举步维艰。首先,对于音视频的基础概念不是特别清楚,再者在工作中边学边做,很难对整个音视频领域有一个全面的了解,并且市面上没有相关成熟的资料从更高的层次来介绍音视频领域在移动端的演进与发展。这几年的设计实战与开发经验,以及带新人入门的众多感触,让我有了写这本书的动力,同时也形成了这本书的核心内容,我希望通过本书可以帮助更多想要在移动端音视频领域实现自己想法的工程师,让大家可以顺利地建立起自己的音视频App。我非常希望能为刚入门的读者或者遇到困难的读者提供帮助,希望大家可以享受整个开发的过程,享受自己开发的产品为人们的生活带来便利的成就感。另外,从整个音视频开发领域来讲,我也十分希望能够通过本书贡献出自己的绵薄之力。
读者对象
产品经理,这部分读者可以从中了解在移动端进行音视频开发会遇到的很多问题以及对应的优化策略,例如:如何通过音视频的统计数据为产品提供更加流畅的策略(视频观看的秒开、直播推流的流畅度、视频上传的成功率等)。
项目经理,这部分读者可以了解很多时下流行的名词与概念,不再会因为几个专业名词就让自己不知所措,并且有助于更好地评估音视频项目开发中的风险与进度。
测试人员,这部分读者可以学习在音视频App中由于处理过程不同而导致的瓶颈问题,书中也提到了一些自动化测试相关的命令以及工具,可以对CPU的负载情况、内存的占用情况、内存泄漏问题等进行分析。
架构师与工程师,这部分读者只需要一点移动开发经验就可以阅读本书了。当然如果你已经是一个高级移动开发工程师或者架构师,那么读起本书来将更加游刃有余。再进一步,如果你已经是移动领域的音视频开发工程师了,那么恭喜你,我们之间将会有一场关于技术领域内部的对话。
开设相关课程的高等院校。
如何阅读本书
为了避免说教式的讲解带来枯燥乏味的阅读体验,本书给出了大量的实例及生产环境下的案例。本书可分为四个部分:,部分是入门,从理论基础开始讲解,终会产生两个实践项目;第二部分是提高,基于,部分的项目添加特效,形成一个完整的多媒体项目;第三部分是扩展,结合当下比较流行的直播场景进行实际案例分析;第四部分是工具,介绍当下大部分可以提高开发以及测试效率的工具。下面是各个章节的基本介绍。
第1章,介绍音视频的基础概念,其中包括音视频的基础数据格式、编码后的数据格式以及不同格式之间的相互转换等。
第2章,从零开始讲解如何搭建一个iOS项目和一个Android项目,并且添加C++支持,因为在音视频领域的开发中,有相当一部分的代码需要用C++来编写,这样就可以做到两个平台(Android和iOS平台)共用一套代码仓库,以提升开发效率。然后讲解交叉编译,因为在音视频开发过程中会用到很多第三方开源库,如果将这些库编译到我们的项目中,势必要进行交叉编译,因此本章会重点讲解这些内容。
第3章,探讨FFmpeg开源库。对于音视频开发来讲,FFmpeg开源库是众所周知也是普遍使用的。本章首先从编译开始,接着是命令行使用,再到源码结构,后是API调用,以层层递进的方式对FFmpeg开源库展开介绍。
第4章,讲解如何利用各自平台的AP