文章目录

  • 第1章 音视频基础知识 1
  • 第2章 常用的系统播放器MediaPlayer 8
  • 第3章 管理调度的服务者MediaPlayerService 40
  • 第4章 StagefrightPlayer(AwesomePlayer) 60
  • 第5章 流媒体播放的新生力量NuPlayer 98
  • 第6章 OpenMAX(OMX)框架 118
  • 第7章 FFmpeg项目 161

出版年: 2018-11

简介:
近年来,直播、短视频行业的相关业务发展迅猛,《Android音视频开发》主要介绍其中涉及的Android音视频开发相关技术。《Android音视频开发》一共有11章,分别介绍了音视频基础知识、MediaPlayer、MediaPlayerService、StagefrightPlayer、NuPlayer、OpenMAX框架、FFmpeg项目、FFmpeg源码分析及实战、直播技术、H.264编码及H.265编码、视频格式分析内容。希望《Android音视频开发》能帮助读者系统学习、化繁为简,在Android音视频开发的道路上不断进步。

豆瓣

第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与PTS 5
1.5.9 YUV与RGB 5
1.5.10 视频帧及音频帧 5
1.5.11 量化精度 6
1.5.12 采样率 6
1.5.13 声道 6

第2章 常用的系统播放器MediaPlayer 8

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章 管理调度的服务者MediaPlayerService 40

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 [1]
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章 流媒体播放的新生力量NuPlayer 98

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中分发事件到OMXCodec 133
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下编译FFmpeg 163
7.2.1 MSYS2 164
7.2.2 Yasm 164
7.2.3 开始编译FFmpeg-3.1.3 166
7.2.4 创建shell编译脚本 167
7.2.5 编译动态库.so 169
7.2.6 编译静态库.a 171
7.3 在Linux下编译FFmpeg 172
7.3.1 在/etc/profile.d下配置环境变量 172
7.3.2 开始编译FFmpeg-3.1.3 174
7.3.3 编写shell脚本 175
7.3.4 编译动态库.so 176
7.3.5 编译静态库.a 178 [1]

《Android音视频开发》— Android 书籍相关推荐

  1. Android高级进阶书籍推荐

    中级进阶推荐看一下以下这几本书: <Android从入门到精通(附光盘)> 明日科技 编 <第一行代码2 Android(第二版)> 郭霖 著 <Android开发进阶 ...

  2. 【提升技能必备】这基本Android高级进阶的好书值得一看

    Android开发的书籍有很多,下面简单的就我看过的感觉写的很全面,很深入,很有启示意义的几本书推荐给大家,希望大家在闲暇之时也能买来看看.(只是介绍书籍,想买的自己百度书名.别误会.)当然如果你觉得 ...

  3. 【提升技能必备】这几本Android高级进阶的好书值得一看

    点击上方蓝字关注公众号 码个蛋第271次推文 备点年货 作者:AWeiLoveAndroid 博客:https://www.jianshu.com/u/f408bdadacce Android开发的书 ...

  4. [总]Android高级进阶之路

    个人Android高级进阶之路,目前按照这个目录执行,执行完毕再做扩展!!!!! 一.View的绘制 1)setContentView()的源码分析 2)SnackBar的源码分析 3)利用decor ...

  5. 11 | Android 高级进阶(源码剖析篇) Square 高效易用的 IO 框架 okio(四)

    作者简介:ASCE1885, <Android 高级进阶>作者. 本文由于潜在的商业目的,未经授权不开放全文转载许可,谢谢! 本文分析的源码版本已经 fork 到我的 Github. 超时 ...

  6. 《Android高级进阶》读书笔记

    <Android高级进阶>是据我所知的市面上唯一一本技术工具书,比较的高大全,作者的目的是为了对全领域有个初步的概念 No1: 在Android系统中,拥有事件传递处理能力的类有以下三种 ...

  7. 《Android高级进阶》小密圈开通啦

    @author ASCE1885的 Github 简书 微博 CSDN 知乎 <Android高级进阶>一书的读者可免费加入,后续会专注于原创或者分享 Android,iOS,React ...

  8. Android高级进阶——绘图篇(五)setXfermode 设置混合模式

    一.GPU硬件加速 1.概述 GPU英文全称Graphic Processing Unit,中文翻译为"图形处理器".与CPU不同,GPU是专门为处理图形任务而产生的芯片. 在GP ...

  9. (转)Android高级进阶--插曲-从Android5.0到Android9.0各版本变化

    原文:https://blog.csdn.net/gaoxiaoweiandy/article/details/83216001 从Android5.0到Android9.0 自从公司提出了一些出其不 ...

  10. Android高级进阶--插曲-从Android5.0到Android10各版本变化

    从Android5.0到Android10 一.Android5 1.ANDROID 5.0 行为变更: 声音和振动 (1)如果您当前使用 Ringtone.MediaPlayer 或 Vibrato ...

最新文章

  1. kafka修改分区数_大数据技术:解析SparkStreaming和Kafka集成的两种方式
  2. JNDI数据源的使用
  3. 【学术相关】翻倍!研究生招生规模持续扩张!
  4. 又一款度盘不限速神器!无需登录即可下载
  5. Matlab形态学图像处理:二值图像分割 标记连通区域和重心位置 删除连通区域
  6. STRUTS2.X之使用validate方法验证数据
  7. [js] alert如何让文本换行?
  8. 沈阳药科大学计算机二级好考吗,沈阳药科大学考研难吗?一般要什么水平才可以进入?...
  9. Python学习笔记(一)——基本知识点
  10. python 双冒号切片_Numpy 学习笔记
  11. 【超详细】随机变量及其分布——《概率论与数理统计》第二章学习笔记
  12. 天猫商城应用自定义类代码
  13. 数学笔记(四)线性代数知识点总结
  14. 计算理论重点——Theory of Computation
  15. xp系统遭遇STOP 0X0000007B蓝屏,附解决方案
  16. 2018.11.07 NOIP训练 lzy的游戏(01背包)
  17. 基于Qt的局域网即时通讯软件
  18. iOS常见错误1-SQLite错误-SQLITE_CANTOPEN,SQLITE_MISUSE和SQLITE_BUSY
  19. primeNG组件库在Angular2上的使用
  20. 服务器””上的 MSDTC 不可用。解决办法

热门文章

  1. 笔试+面试信息整理----面向笔试学习、面向面经编程
  2. P4692 [Ynoi2016]谁的梦
  3. IOS:UI设计之UISegmentedControl相关基础
  4. 显示浏览器表单输入框的缓存密码
  5. HightChar图表控件
  6. 关于SilverLight视频播放器
  7. 二进制,八进制十进制十六进制之间数据转换
  8. ACL 2021 | 如何利用DialoGPT辅助对话摘要任务?
  9. 【招聘】智联NLP算法工程师
  10. 【Pre-Training】XLNet:预训练最强,舍我其谁