《Android音视频开发》— Android 书籍
文章目录
出版年: 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代码混淆打包
- 基于Android开发的天气预报app(源码下载)「建议收藏」
- 【Android】PreferenceFragment「建议收藏」
- eclipse中android开发_Android开发教程
- 【Android 应用开发】Android - 时间 日期相关组件
- 【Android 应用开发】 自定义 圆形进度条 组件
- 【Android FFMPEG 开发】音视频基础 和 FFMPEG 编译 ( 音视频基础 | MPEG-4 标准 | Android 开发环境 | FFMPEG 交叉编译 | 安卓项目导入配置 )
- 【Android NDK 开发】NDK 交叉编译 ( NDK 函数库目录 | Linux 交叉编译环境搭建 | 指定头文件目录 | 指定函数库目录 | 编译 Android 命令行可执行文件 )
- 【Android FFMPEG 开发】FFMPEG 音视频同步 ( 音视频同步方案 | 视频帧 FPS 控制 | H.264 编码 I / P / B 帧 | PTS | 音视频同步 )
- 【Android FFMPEG 开发】FFMPEG 直播功能完整流程 + 源码 ( 源码交叉编译 -> AS工程配置 -> 音视频打开/读取/解码/格式转换 -> 原生绘制播放 -> 音视频同步 )
- 【错误记录】Android Studio 编译时 Kotlin 代码编译报错 ( 升级支持库时处理 @NonNull 参数 )
- 【Android 应用开发】动态权限管理示例 ( 使用原生代码实现 | 申请权限 | 判定权限申请结果 | 判定 “ 不再询问 “ 情况 )
- 【Android 事件分发】ItemTouchHelper 事件分发源码分析 ( 绑定 RecyclerView )
- 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 三 | 等待远程函数执行完毕 | 寄存器获取返回值 )
- 【Android WebSocket】Android 端 WebSocket 基本用法 ( 添加依赖和权限 | 创建 WebSocketClient 客户端类 | 建立连接并发送消息 )
- 【Android Gradle 插件】DexOptions 配置 ⑤ ( additionalParameters 属性配置 | --minimal-main-dex 参数最小化主 dex 字节码 )
- 【Android 屏幕适配】屏幕适配基础概念 ① ( Android 与 iOS 屏幕宽高比种类 | 屏幕像素密度 DPI )
- Android系统的应用开发与运行环境构建详解手机开发
- Android 网络工具类详解手机开发
- [android] 优酷环形菜单-旋转动画详解手机开发
- android自定义xmls文件属性详解手机开发
- Android中的ProgressBar的android:indeterminate详解手机开发
- Kotlin Android Extensions使用指南详解手机开发
- Android 写一个属于自己的音视频播放器详解手机开发
- Galaxy A10e是三星最新推出的Android 11手机
- Android开发技巧之永不关闭的Toast信息框(长时间显示而非系统关闭)
- 基于Android中实现定时器的3种解决方法
- Android开发笔记之:复写按钮方法
- android压力测试命令monkey详解