Android音视频开发作者: 何俊林 出版时间:2018年版内容简介 近年来,直播、短视频行业的相关业务发展迅猛,本书主要介绍其中涉及的Android音视频开发相关技术。本书一共有11章,分别介绍了音视频基础知识、MediaPlayer、MediaPlayerService、StagefrightPlayer、NuPlayer、OpenMAX框架、FFmpeg项目、FFmpeg源码分析及实战、直播技术、H.264编码及H.265编码、视频格式分析内容。希望本书能帮助读者系统学习、化繁为简,在Android音视频开发的道路上不断进步。本书适合具有一定Android开发基础并且对音视频技术方向感兴趣的读者阅读。目录第1章 音视频基础知识 11.1 视频编码 11.2 音频编码 21.3 多媒体播放组件(Android、iOS) 21.4 常见的多媒体框架及解决方案 31.5 相关知识点 41.5.1 帧率 41.5.2 分辨率 41.5.3 刷新率 41.5.4 编码格式 41.5.5 封装格式 41.5.6 码率 51.5.7 画质与码率 51.5.8 DTS与PTS 51.5.9 YUV与RGB 51.5.10 视频帧及音频帧 51.5.11 量化精度 61.5.12 采样率 61.5.13 声道 6第2章 常用的系统播放器MediaPlayer 82.1 状态图及生命周期 82.2 从创建到setDataSource过程 122.2.1 从创建到setDisplay过程 122.2.2 创建过程 132.2.3 setDataSource过程 162.2.4 setDisplay过程 202.3 开始prepare后的流程 222.4 C++中MediaPlayer的C/S架构 31第3章 管理调度的服务者MediaPlayerService 403.1 Client/Server通过IPC的通信流程图 403.2 相关联的类图 423.3 产生过程 433.4 添加服务的过程 483.5 通过BinderDriver和MediaPlayer通信的过程 503.6 创建播放器 553.7 建立StageFright层交互 58第4章 StagefrightPlayer(AwesomePlayer) 604.1 AwesomePlayer构造过程 604.2 AwesomePlayer使用MediaExtractor进行数据解析的过程 664.3 AwesomePlayer解码过程 694.3.1 AwesomePlayer中的prepare过程 694.3.2 初始化音视频解码器过程 734.3.3 使用OMXCodec的解码过程 754.4 AwesomePlayer的渲染输出过程 804.4.1 用一张图回顾数据处理过程 804.4.2 视频渲染器构建过程 814.4.3 将音频数据放到Buffer的过程 874.4.4 AudioPlayer在AwesomePlayer中的运行过程 914.4.5 音视频同步 934.4.6 音视频输出 964.5 概要总结 97第5章 流媒体播放的新生力量NuPlayer 985.1 NuPlayer整体结构 985.2 NuPlayer的构建过程 1005.3 NuPlayer的数据解析模块 1025.4 NuPlayer的解码模块 1075.5 NuPlayer的渲染模块 109第6章 OpenMAX(OMX)框架 1186.1 Codec部分中的AwesomePlayer到OMX服务 1186.1.1 OpenMAX与StageFright框架层级的关系 1186.1.2 OMX的初始化流程 1206.1.3 OMX中NodeInstance列表的管理 1276.1.4 OMX中NodeInstance节点的操作 1276.1.5 总结AwesomePlayer到OMX服务过程 1306.2 Codec部分中的OMXCodec与OMX事件回调流程 1316.2.1 OMXCodec与OMX callback事件的处理时序图 1326.2.2 如何从OMX中分发事件到OMXCodec 1336.2.3 缓冲区更新过程 1356.2.4 消息回调 1376.3 MediaCodec相关知识 1396.3.1 MediaCodec的基本认识 1396.3.2 从创建到Start过程 1486.3.3 MediaCodec到OMX框架过程 1546.3.4 MediaCodec硬解码 158第7章 FFmpeg项目 1617.1 FFmpeg简介 1617.2 在Windows下编译FFmpeg 1637.2.1 MSYS2 1647.2.2 Yasm 1647.2.3 开始编译FFmpeg-3.1.3 1667.2.4 创建shell编译脚本 1677.2.5 编译动态库.so 1697.2.6 编译静态库.a 1717.3 在Linux下编译FFmpeg 1727.3.1 在/etc/profile.d下配置环境变量 1727.3.2 开始编译FFmpeg-3.1.3 1747.3.3 编写shell脚本 1757.3.4 编译动态库.so 1767.3.5 编译静态库.a 1787.4 在Mac OS下编译FFmpeg 1797.4.1 下载源码及配置环境变量 1797.4.2 开始编译FFmpeg-3.1.3 1837.4.3 编写shell脚本 1837.4.4 编译动态库.so 1857.4.5 编译静态库.a 1877.5 FFmpeg常用命令 1897.5.1 改变帧率、码率和文件大小 1897.5.2 调整视频分辨率 1907.5.3 裁剪/填充视频 1917.5.4 翻转和旋转视频 1937.5.5 模糊和锐化视频 1967.5.6 画中画 1977.5.7 在视频上添加文字 2017.5.8 文件格式转换 2057.5.9 时间操作 207第8章 FFmpeg源码分析及实战 2088.1 FFmpeg常用结构体分析 2088.1.1 AVFormatConext 2098.1.2 AVInputFormat 2118.1.3 AVStream 2128.1.4 AVCodecContext 2158.1.5 AVPacket 2168.1.6 AVCodec 2188.1.7 AVFrame 2198.1.8 AVIOContext 2228.1.9 URLProtocol 2238.1.10 URLContext 2248.2 FFmpeg关键函数介绍 2258.2.1 av_register_all函数 2258.2.2 avformat_alloc_context函数 2268.2.3 avio_open函数 2268.2.4 avformat_open_input函数 2298.2.5 avformat_find_stream_info函数 2328.2.6 av_read_frame函数 2468.2.7 av_write_frame函数 2528.2.8 avcodec_decode_video2函数 2568.3 FFmpeg案例(代码实现) 2648.3.1 利用FFmpeg转换格式 2648.3.2 在实时流中抓取图像 2698.3.3 在视频中加入水印 2778.3.4 FFmpeg音频解码 2888.3.5 FFmpeg视频解码 3008.4 FFPlay原理 3088.4.1 注册所有容器格式和Codec 3098.4.2 打开流文件 3098.4.3 读取数据 3118.4.4 保存数据 3188.4.5 音视频同步 3228.4.6 音视频输出 326第9章 直播技术 3289.1 直播原理 3289.2 直播架构 3289.3 直播过程 3299.3.1 采集数据 3299.3.2 渲染处理 3329.3.3 编码数据 3339.3.4 推流 3359.3.5 CDN分发 3389.3.6 拉流 3419.3.7 播放流数据 3419.3.8 直播推流完整案例 3439.4 流媒体服务器搭建 3779.5 FFmpeg推流到流媒体服务器的过程 3849.6 直播优化那些事 3879.6.1 卡顿优化 3879.6.2 延时优化 3889.6.3 数据代理优化 3899.6.4 首屏秒开优化 3909.6.5 弱网优化 3919.6.6 运营商劫持优化 3919.6.7 CDN节点优化 393第10章 H.264编码及H.265编码 39510.1 H.264编码框架 39510.2 H.264编码原理 39510.3 H.264码流分析 39710.3.1 H.264编码格式 39710.3.2 NAL Header 39710.3.3 H.264的传输 39910.3.4 H.264码流结构 39910.3.5 H.264的Level和Profile说明 40610.4 H.265编码框架 40810.4.1 背景知识 40810.4.2 H.265码流结构 409第11章 视频格式分析 41411.1 MP4格式分析 41411.1.1 Box结构 41511.1.2 MP4总体结构 41611.1.3 movie(moov)box 41611.1.4 media box 41811.1.5 sample table(stbl)box 42011.2 FLV格式分析 42211.2.1 FLV文件结构 42211.2.2 File Header(文件头) 42211.2.3 Body 42311.2.4 Tag 42311.3 F4V格式分析 42811.3.1 file type box 42911.3.2 movie box 43011.3.3 movie header box 43011.3.4 track box 43011.3.5 media box 43111.3.6 media information box 43311.3.7 sample table box 43311.4 TS格式分析 43711.4.1 TS格式介绍 43711.4.2 TS流包含的内容 43811.4.3 TS包头解析 43811.4.4 TS包传输部分 44011.4.5 节目专用信息PSI(Program Specific Information) 44011.5 AVI格式分析 44411.5.1 AVI整体结构 44511.5.2 AVI信息块('hdrl' LIST块) 44611.5.3 AVI数据块('movi' LIST块) 44711.5.4 AVI索引块('idxl'子块) 44811.6 ASF格式分析 44811.6.1 认识ASF 44811.6.2 ASF文件整体结构 449 上一篇:Bootstrap实战从入门到精通 未来科技 2017年版下一篇:C 7.0核心技术指南 原书第7版 约瑟夫·阿坝哈瑞(Joseph Albahari),本·阿坝哈瑞(Ben Albahari) 著