Android音视频开发

Android音视频开发
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2018-11
版次: 1
ISBN: 9787121349966
定价: 99.00
装帧: 其他
开本: 16开
纸张: 胶版纸
页数: 468页
134人买过
  • 近年来,直播、短视频行业的相关业务发展迅猛,本书主要介绍其中涉及的Android音视频开发相关技术。本书一共有11章,分别介绍了音视频基础知识、MediaPlayer、MediaPlayerService、StagefrightPlayer、NuPlayer、OpenMAX框架、FFmpeg项目、FFmpeg源码分析及实战、直播技术、H.264编码及H.265编码、视频格式分析内容。希望本书能帮助读者系统学习、化繁为简,在Android音视频开发的道路上不断进步。本书适合具有一定Android开发基础并且对音视频技术方向感兴趣的读者阅读。 何俊林,曾就职于爱奇艺,先后参与TV播放器业务和需求开发,以及TV新播放内核开发和维护。主要研究方向为多媒体、音视频、Codec相关方向。长期在CSDN上坚持写博客,2016获得CSDN音视频之星、年度博客之星。爱好开源,乐于研究和分享技术。同时运营公号“何俊林”,超过4w 人关注。 目  录

    第1章 音视频基础知识1

    1.1 视频编码1

    1.2 音频编码2

    1.3 多媒体播放组件(Android、iOS)2

    1.4 常见的多媒体框架及解决方案3

    1.5 相关知识点4

    1.5.1 帧率4

    1.5.2 分辨率4

    1.5.3 刷新率4

    1.5.4 编码格式4

    1.5.5 封装格式4

    1.5.6 码率5

    1.5.7 画质与码率5

    1.5.8 DTS与PTS5

    1.5.9 YUV与RGB5

    1.5.10 视频帧及音频帧5

    1.5.11 量化精度6

    1.5.12 采样率6

    1.5.13 声道6

    第2章 常用的系统播放器MediaPlayer8

    2.1 状态图及生命周期8

    2.2 从创建到setDataSource过程12

    2.2.1 从创建到setDisplay过程12

    2.2.2 创建过程13

    2.2.3 setDataSource过程16

    2.2.4 setDisplay过程20

    2.3 开始prepare后的流程22

    2.4 C  中MediaPlayer的C/S架构31

    第3章 管理调度的服务者MediaPlayerService40

    3.1 Client/Server通过IPC的通信流程图40

    3.2 相关联的类图42

    3.3 产生过程43

    3.4 添加服务的过程48

    3.5 通过BinderDriver和MediaPlayer通信的过程50

    3.6 创建播放器55

    3.7 建立StageFright层交互58

    第4章 StagefrightPlayer(AwesomePlayer)60

    4.1 AwesomePlayer构造过程60

    4.2 AwesomePlayer使用MediaExtractor进行数据解析的过程66

    4.3 AwesomePlayer解码过程69

    4.3.1 AwesomePlayer中的prepare过程69

    4.3.2 初始化音视频解码器过程73

    4.3.3 使用OMXCodec的解码过程75

    4.4 AwesomePlayer的渲染输出过程80

    4.4.1 用一张图回顾数据处理过程80

    4.4.2 视频渲染器构建过程81

    4.4.3 将音频数据放到Buffer的过程87

    4.4.4 AudioPlayer在AwesomePlayer中的运行过程91

    4.4.5 音视频同步93

    4.4.6 音视频输出96

    4.5 概要总结97

    第5章 流媒体播放的新生力量NuPlayer98

    5.1 NuPlayer整体结构98

    5.2 NuPlayer的构建过程100

    5.3 NuPlayer的数据解析模块102

    5.4 NuPlayer的解码模块107

    5.5 NuPlayer的渲染模块109

    第6章 OpenMAX(OMX)框架118

    6.1 Codec部分中的AwesomePlayer到OMX服务118

    6.1.1 OpenMAX与StageFright框架层级的关系118

    6.1.2 OMX的初始化流程120

    6.1.3 OMX中NodeInstance列表的管理127

    6.1.4 OMX中NodeInstance节点的操作127

    6.1.5 总结AwesomePlayer到OMX服务过程130

    6.2 Codec部分中的OMXCodec与OMX事件回调流程131

    6.2.1 OMXCodec与OMX callback事件的处理时序图132

    6.2.2 如何从OMX中分发事件到OMXCodec133

    6.2.3 缓冲区更新过程135

    6.2.4 消息回调137

    6.3 MediaCodec相关知识139

    6.3.1 MediaCodec的基本认识139

    6.3.2 从创建到Start过程148

    6.3.3 MediaCodec到OMX框架过程154

    6.3.4 MediaCodec硬解码158

    第7章 FFmpeg项目161

    7.1 FFmpeg简介161

    7.2 在Windows下编译FFmpeg163

    7.2.1 MSYS2164

    7.2.2 Yasm164

    7.2.3 开始编译FFmpeg-3.1.3166

    7.2.4 创建shell编译脚本167

    7.2.5 编译动态库.so169

    7.2.6 编译静态库.a171

    7.3 在Linux下编译FFmpeg172

    7.3.1 在/etc/profile.d下配置环境变量172

    7.3.2 开始编译FFmpeg-3.1.3174

    7.3.3 编写shell脚本175

    7.3.4 编译动态库.so176

    7.3.5 编译静态库.a178

    7.4 在Mac OS下编译FFmpeg179

    7.4.1 下载源码及配置环境变量179

    7.4.2 开始编译FFmpeg-3.1.3183

    7.4.3 编写shell脚本183

    7.4.4 编译动态库.so185

    7.4.5 编译静态库.a187

    7.5 FFmpeg常用命令189

    7.5.1 改变帧率、码率和文件大小189

    7.5.2 调整视频分辨率190

    7.5.3 裁剪/填充视频191

    7.5.4 翻转和旋转视频193

    7.5.5 模糊和锐化视频196

    7.5.6 画中画197

    7.5.7 在视频上添加文字201

    7.5.8 文件格式转换205

    7.5.9 时间操作207

    第8章 FFmpeg源码分析及实战208

    8.1 FFmpeg常用结构体分析208

    8.1.1 AVFormatConext209

    8.1.2 AVInputFormat211

    8.1.3 AVStream212

    8.1.4 AVCodecContext215

    8.1.5 AVPacket216

    8.1.6 AVCodec218

    8.1.7 AVFrame219

    8.1.8 AVIOContext222

    8.1.9 URLProtocol223

    8.1.10 URLContext224

    8.2 FFmpeg关键函数介绍225

    8.2.1 av_register_all函数225

    8.2.2 avformat_alloc_context函数226

    8.2.3 avio_open函数226

    8.2.4 avformat_open_input函数229

    8.2.5 avformat_find_stream_info函数232

    8.2.6 av_read_frame函数246

    8.2.7 av_write_frame函数252

    8.2.8 avcodec_decode_video2函数256

    8.3 FFmpeg案例(代码实现)264

    8.3.1 利用FFmpeg转换格式264

    8.3.2 在实时流中抓取图像269

    8.3.3 在视频中加入水印277

    8.3.4 FFmpeg音频解码288

    8.3.5 FFmpeg视频解码300

    8.4 FFPlay原理308

    8.4.1 注册所有容器格式和Codec309

    8.4.2 打开流文件309

    8.4.3 读取数据311

    8.4.4 保存数据318

    8.4.5 音视频同步322

    8.4.6 音视频输出326

    第9章 直播技术328

    9.1 直播原理328

    9.2 直播架构328

    9.3 直播过程329

    9.3.1 采集数据329

    9.3.2 渲染处理332

    9.3.3 编码数据333

    9.3.4 推流335

    9.3.5 CDN分发338

    9.3.6 拉流341

    9.3.7 播放流数据341

    9.3.8 直播推流完整案例343

    9.4 流媒体服务器搭建377

    9.5 FFmpeg推流到流媒体服务器的过程384

    9.6 直播优化那些事387

    9.6.1 卡顿优化387

    9.6.2 延时优化388

    9.6.3 数据代理优化389

    9.6.4 首屏秒开优化390

    9.6.5 弱网优化391

    9.6.6 运营商劫持优化391

    9.6.7 CDN节点优化393

    第10章 H.264编码及H.265编码395

    10.1 H.264编码框架395

    10.2 H.264编码原理395

    10.3 H.264码流分析397

    10.3.1 H.264编码格式397

    10.3.2 NAL Header397

    10.3.3 H.264的传输399

    10.3.4 H.264码流结构399

    10.3.5 H.264的Level和Profile说明406

    10.4 H.265编码框架408

    10.4.1 背景知识408

    10.4.2 H.265码流结构409

    第11章 视频格式分析414

    11.1 MP4格式分析414

    11.1.1 Box结构415

    11.1.2 MP4总体结构416

    11.1.3 movie(moov)box416

    11.1.4 media box418

    11.1.5 sample table(stbl)box420

    11.2 FLV格式分析422

    11.2.1 FLV文件结构422

    11.2.2 File Header(文件头)422

    11.2.3 Body423

    11.2.4 Tag423

    11.3 F4V格式分析428

    11.3.1 file type box429

    11.3.2 movie box430

    11.3.3 movie header box430

    11.3.4 track box430

    11.3.5 media box431

    11.3.6 media information box433

    11.3.7 sample table box433

    11.4 TS格式分析437

    11.4.1 TS格式介绍437

    11.4.2 TS流包含的内容438

    11.4.3 TS包头解析438

    11.4.4 TS包传输部分440

    11.4.5 节目专用信息PSI(Program Specific Information)440

    11.5 AVI格式分析444

    11.5.1 AVI整体结构445

    11.5.2 AVI信息块('hdrl' LIST块)446

    11.5.3 AVI数据块('movi' LIST块)447

    11.5.4 AVI索引块('idxl'子块)448

    11.6 ASF格式分析448

    11.6.1 认识ASF448

    11.6.2 ASF文件整体结构449
  • 内容简介:
    近年来,直播、短视频行业的相关业务发展迅猛,本书主要介绍其中涉及的Android音视频开发相关技术。本书一共有11章,分别介绍了音视频基础知识、MediaPlayer、MediaPlayerService、StagefrightPlayer、NuPlayer、OpenMAX框架、FFmpeg项目、FFmpeg源码分析及实战、直播技术、H.264编码及H.265编码、视频格式分析内容。希望本书能帮助读者系统学习、化繁为简,在Android音视频开发的道路上不断进步。本书适合具有一定Android开发基础并且对音视频技术方向感兴趣的读者阅读。
  • 作者简介:
    何俊林,曾就职于爱奇艺,先后参与TV播放器业务和需求开发,以及TV新播放内核开发和维护。主要研究方向为多媒体、音视频、Codec相关方向。长期在CSDN上坚持写博客,2016获得CSDN音视频之星、年度博客之星。爱好开源,乐于研究和分享技术。同时运营公号“何俊林”,超过4w 人关注。
  • 目录:
    目  录

    第1章 音视频基础知识1

    1.1 视频编码1

    1.2 音频编码2

    1.3 多媒体播放组件(Android、iOS)2

    1.4 常见的多媒体框架及解决方案3

    1.5 相关知识点4

    1.5.1 帧率4

    1.5.2 分辨率4

    1.5.3 刷新率4

    1.5.4 编码格式4

    1.5.5 封装格式4

    1.5.6 码率5

    1.5.7 画质与码率5

    1.5.8 DTS与PTS5

    1.5.9 YUV与RGB5

    1.5.10 视频帧及音频帧5

    1.5.11 量化精度6

    1.5.12 采样率6

    1.5.13 声道6

    第2章 常用的系统播放器MediaPlayer8

    2.1 状态图及生命周期8

    2.2 从创建到setDataSource过程12

    2.2.1 从创建到setDisplay过程12

    2.2.2 创建过程13

    2.2.3 setDataSource过程16

    2.2.4 setDisplay过程20

    2.3 开始prepare后的流程22

    2.4 C  中MediaPlayer的C/S架构31

    第3章 管理调度的服务者MediaPlayerService40

    3.1 Client/Server通过IPC的通信流程图40

    3.2 相关联的类图42

    3.3 产生过程43

    3.4 添加服务的过程48

    3.5 通过BinderDriver和MediaPlayer通信的过程50

    3.6 创建播放器55

    3.7 建立StageFright层交互58

    第4章 StagefrightPlayer(AwesomePlayer)60

    4.1 AwesomePlayer构造过程60

    4.2 AwesomePlayer使用MediaExtractor进行数据解析的过程66

    4.3 AwesomePlayer解码过程69

    4.3.1 AwesomePlayer中的prepare过程69

    4.3.2 初始化音视频解码器过程73

    4.3.3 使用OMXCodec的解码过程75

    4.4 AwesomePlayer的渲染输出过程80

    4.4.1 用一张图回顾数据处理过程80

    4.4.2 视频渲染器构建过程81

    4.4.3 将音频数据放到Buffer的过程87

    4.4.4 AudioPlayer在AwesomePlayer中的运行过程91

    4.4.5 音视频同步93

    4.4.6 音视频输出96

    4.5 概要总结97

    第5章 流媒体播放的新生力量NuPlayer98

    5.1 NuPlayer整体结构98

    5.2 NuPlayer的构建过程100

    5.3 NuPlayer的数据解析模块102

    5.4 NuPlayer的解码模块107

    5.5 NuPlayer的渲染模块109

    第6章 OpenMAX(OMX)框架118

    6.1 Codec部分中的AwesomePlayer到OMX服务118

    6.1.1 OpenMAX与StageFright框架层级的关系118

    6.1.2 OMX的初始化流程120

    6.1.3 OMX中NodeInstance列表的管理127

    6.1.4 OMX中NodeInstance节点的操作127

    6.1.5 总结AwesomePlayer到OMX服务过程130

    6.2 Codec部分中的OMXCodec与OMX事件回调流程131

    6.2.1 OMXCodec与OMX callback事件的处理时序图132

    6.2.2 如何从OMX中分发事件到OMXCodec133

    6.2.3 缓冲区更新过程135

    6.2.4 消息回调137

    6.3 MediaCodec相关知识139

    6.3.1 MediaCodec的基本认识139

    6.3.2 从创建到Start过程148

    6.3.3 MediaCodec到OMX框架过程154

    6.3.4 MediaCodec硬解码158

    第7章 FFmpeg项目161

    7.1 FFmpeg简介161

    7.2 在Windows下编译FFmpeg163

    7.2.1 MSYS2164

    7.2.2 Yasm164

    7.2.3 开始编译FFmpeg-3.1.3166

    7.2.4 创建shell编译脚本167

    7.2.5 编译动态库.so169

    7.2.6 编译静态库.a171

    7.3 在Linux下编译FFmpeg172

    7.3.1 在/etc/profile.d下配置环境变量172

    7.3.2 开始编译FFmpeg-3.1.3174

    7.3.3 编写shell脚本175

    7.3.4 编译动态库.so176

    7.3.5 编译静态库.a178

    7.4 在Mac OS下编译FFmpeg179

    7.4.1 下载源码及配置环境变量179

    7.4.2 开始编译FFmpeg-3.1.3183

    7.4.3 编写shell脚本183

    7.4.4 编译动态库.so185

    7.4.5 编译静态库.a187

    7.5 FFmpeg常用命令189

    7.5.1 改变帧率、码率和文件大小189

    7.5.2 调整视频分辨率190

    7.5.3 裁剪/填充视频191

    7.5.4 翻转和旋转视频193

    7.5.5 模糊和锐化视频196

    7.5.6 画中画197

    7.5.7 在视频上添加文字201

    7.5.8 文件格式转换205

    7.5.9 时间操作207

    第8章 FFmpeg源码分析及实战208

    8.1 FFmpeg常用结构体分析208

    8.1.1 AVFormatConext209

    8.1.2 AVInputFormat211

    8.1.3 AVStream212

    8.1.4 AVCodecContext215

    8.1.5 AVPacket216

    8.1.6 AVCodec218

    8.1.7 AVFrame219

    8.1.8 AVIOContext222

    8.1.9 URLProtocol223

    8.1.10 URLContext224

    8.2 FFmpeg关键函数介绍225

    8.2.1 av_register_all函数225

    8.2.2 avformat_alloc_context函数226

    8.2.3 avio_open函数226

    8.2.4 avformat_open_input函数229

    8.2.5 avformat_find_stream_info函数232

    8.2.6 av_read_frame函数246

    8.2.7 av_write_frame函数252

    8.2.8 avcodec_decode_video2函数256

    8.3 FFmpeg案例(代码实现)264

    8.3.1 利用FFmpeg转换格式264

    8.3.2 在实时流中抓取图像269

    8.3.3 在视频中加入水印277

    8.3.4 FFmpeg音频解码288

    8.3.5 FFmpeg视频解码300

    8.4 FFPlay原理308

    8.4.1 注册所有容器格式和Codec309

    8.4.2 打开流文件309

    8.4.3 读取数据311

    8.4.4 保存数据318

    8.4.5 音视频同步322

    8.4.6 音视频输出326

    第9章 直播技术328

    9.1 直播原理328

    9.2 直播架构328

    9.3 直播过程329

    9.3.1 采集数据329

    9.3.2 渲染处理332

    9.3.3 编码数据333

    9.3.4 推流335

    9.3.5 CDN分发338

    9.3.6 拉流341

    9.3.7 播放流数据341

    9.3.8 直播推流完整案例343

    9.4 流媒体服务器搭建377

    9.5 FFmpeg推流到流媒体服务器的过程384

    9.6 直播优化那些事387

    9.6.1 卡顿优化387

    9.6.2 延时优化388

    9.6.3 数据代理优化389

    9.6.4 首屏秒开优化390

    9.6.5 弱网优化391

    9.6.6 运营商劫持优化391

    9.6.7 CDN节点优化393

    第10章 H.264编码及H.265编码395

    10.1 H.264编码框架395

    10.2 H.264编码原理395

    10.3 H.264码流分析397

    10.3.1 H.264编码格式397

    10.3.2 NAL Header397

    10.3.3 H.264的传输399

    10.3.4 H.264码流结构399

    10.3.5 H.264的Level和Profile说明406

    10.4 H.265编码框架408

    10.4.1 背景知识408

    10.4.2 H.265码流结构409

    第11章 视频格式分析414

    11.1 MP4格式分析414

    11.1.1 Box结构415

    11.1.2 MP4总体结构416

    11.1.3 movie(moov)box416

    11.1.4 media box418

    11.1.5 sample table(stbl)box420

    11.2 FLV格式分析422

    11.2.1 FLV文件结构422

    11.2.2 File Header(文件头)422

    11.2.3 Body423

    11.2.4 Tag423

    11.3 F4V格式分析428

    11.3.1 file type box429

    11.3.2 movie box430

    11.3.3 movie header box430

    11.3.4 track box430

    11.3.5 media box431

    11.3.6 media information box433

    11.3.7 sample table box433

    11.4 TS格式分析437

    11.4.1 TS格式介绍437

    11.4.2 TS流包含的内容438

    11.4.3 TS包头解析438

    11.4.4 TS包传输部分440

    11.4.5 节目专用信息PSI(Program Specific Information)440

    11.5 AVI格式分析444

    11.5.1 AVI整体结构445

    11.5.2 AVI信息块('hdrl' LIST块)446

    11.5.3 AVI数据块('movi' LIST块)447

    11.5.4 AVI索引块('idxl'子块)448

    11.6 ASF格式分析448

    11.6.1 认识ASF448

    11.6.2 ASF文件整体结构449
查看详情
相关图书 / 更多
Android音视频开发
Animate 2022二维动画制作案例教程(全视频微课版)
董佳佳、程远、金洪宇
Android音视频开发
Android性能优化入门与实战
张世欣(拭心)
Android音视频开发
Android图形显示系统
李先儒
Android音视频开发
Animate CC 动画制作案例教程(第2版)
刘鹏程
Android音视频开发
Android积木式编程开发:AppInventor2018离线中文版(第2版)
刘载兴、张燕燕 编
Android音视频开发
Anisha Accidental Detective
Serena Patel 著;Emma McCann 绘
Android音视频开发
Android自动化测试实战:Python+Appium +unittest
Storm 梁培峰
Android音视频开发
AnEssayonthePrincipleofPopulationandOthe
Malthus, Thomas
Android音视频开发
Android移动应用基础教程(Android Studio)(第3版)
黑马程序员
Android音视频开发
Ansys Workbench 2022中文版有限元分析从入门到精通
CAD/CAM/CAE技术联盟
Android音视频开发
Animate 2022中文版入门与提高
胡仁喜、王昌盛、李华
Android音视频开发
Ansys Fluent中文版流场分析从入门到精通
曾建邦 单丰武