计算机
类型
7.0
豆瓣评分
可以朗读
语音朗读
423千字
字数
2018-11-01
发行日期
展开全部
主编推荐语
音视频技术从基础到实战,掌握Android多媒体开发。
内容简介
本书从音视频基础知识,到Android视频框架,再到广大音视频从业者都使用的FFmpeg框架及其源码部分,通过有趣的案例来演示用法并能快速学习。本书也包含直播相关技术,通过做一个直播客户端,来了解直播的相关技术细节。包含采集数据、渲染处理、编码数据、推流、拉流、解码数据、播放。本书最后介绍H.264编解码器。本书旨在对Android 多媒体或音视频开发提炼与总结。从2016年的直播到2017年的短视频,音视频技术越来越重要。通过本书读者可以从浅到深地了解音视频技术。
目录
- 版权信息
- 内容简介
- 前言
- 本书概要
- 读者对象
- 勘误和支持
- 致谢
- 读者服务
- 第1章 音视频基础知识
- 1.1 视频编码
- 1.2 音频编码
- 1.3 多媒体播放组件(Android、iOS)
- 1.4 常见的多媒体框架及解决方案
- 1.5 相关知识点
- 1.5.1 帧率
- 1.5.2 分辨率
- 1.5.3 刷新率
- 1.5.4 编码格式
- 1.5.5 封装格式
- 1.5.6 码率
- 1.5.7 画质与码率
- 1.5.8 DTS与PTS
- 1.5.9 YUV与RGB
- 1.5.10 视频帧及音频帧
- 1.5.11 量化精度
- 1.5.12 采样率
- 1.5.13 声道
- 第2章 常用的系统播放器MediaPlayer
- 2.1 状态图及生命周期
- 2.2 从创建到setDataSource过程
- 2.2.1 从创建到setDisplay过程
- 2.2.2 创建过程
- 2.2.3 setDataSource过程
- 2.2.4 setDisplay过程
- 2.3 开始prepare后的流程
- 2.4 C++中MediaPlayer的C/S架构
- 第3章 管理调度的服务者MediaPlayerService
- 3.1 Client/Server通过IPC的通信流程图
- 3.2 相关联的类图
- 3.3 产生过程
- 3.4 添加服务的过程
- 3.5 通过BinderDriver和MediaPlayer通信的过程
- 3.6 创建播放器
- 3.7 建立StageFright层交互
- 第4章 StagefrightPlayer (AwesomePlayer)
- 4.1 AwesomePlayer构造过程
- 4.2 AwesomePlayer使用MediaExtractor进行数据解析的过程
- 4.3 AwesomePlayer解码过程
- 4.3.1 AwesomePlayer中的prepare过程
- 4.3.2 初始化音视频解码器过程
- 4.3.3 使用OMXCodec的解码过程
- 4.4 AwesomePlayer的渲染输出过程
- 4.4.1 用一张图回顾数据处理过程
- 4.4.2 视频渲染器构建过程
- 4.4.3 将音频数据放到Buffer的过程
- 4.4.4 AudioPlayer在AwesomePlayer中的运行过程
- 4.4.5 音视频同步
- 4.4.6 音视频输出
- 4.5 概要总结
- 第5章 流媒体播放的新生力量NuPlayer
- 5.1 NuPlayer整体结构
- 5.2 NuPlayer的构建过程
- 5.3 NuPlayer的数据解析模块
- 5.4 NuPlayer的解码模块
- 5.5 NuPlayer的渲染模块
- 第6章 OpenMAX(OMX)框架
- 6.1 Codec部分中的AwesomePlayer到OMX服务
- 6.1.1 OpenMAX与StageFright框架层级的关系
- 6.1.2 OMX的初始化流程
- 6.1.3 OMX中NodeInstance列表的管理
- 6.1.4 OMX中NodeInstance节点的操作
- 6.1.5 总结AwesomePlayer到OMX服务过程
- 6.2 Codec部分中的OMXCodec与OMX事件回调流程
- 6.2.1 OMXCodec与OMX callback事件的处理时序图
- 6.2.2 如何从OMX中分发事件到OMXCodec
- 6.2.3 缓冲区更新过程
- 6.2.4 消息回调
- 6.3 MediaCodec相关知识
- 6.3.1 MediaCodec的基本认识
- 6.3.2 从创建到Start过程
- 6.3.3 MediaCodec到OMX框架过程
- 6.3.4 MediaCodec硬解码
- 第7章 FFmpeg项目
- 7.1 FFmpeg简介
- 7.2 在Windows下编译FFmpeg
- 7.2.1 MSYS2
- 7.2.2 Yasm
- 7.2.3 开始编译FFmpeg-3.1.3
- 7.2.4 创建shell编译脚本
- 7.2.5 编译动态库.so
- 7.2.6 编译静态库.a
- 7.3 在Linux下编译FFmpeg
- 7.3.1 在/etc/profile.d下配置环境变量
- 7.3.2 开始编译FFmpeg-3.1.3
- 7.3.3 编写shell脚本
- 7.3.4 编译动态库.so
- 7.3.5 编译静态库.a
- 7.4 在Mac OS下编译FFmpeg
- 7.4.1 下载源码及配置环境变量
- 7.4.2 开始编译FFmpeg-3.1.3
- 7.4.3 编写shell脚本
- 7.4.4 编译动态库.so
- 7.4.5 编译静态库.a
- 7.5 FFmpeg常用命令
- 7.5.1 改变帧率、码率和文件大小
- 7.5.2 调整视频分辨率
- 7.5.3 裁剪/填充视频
- 7.5.4 翻转和旋转视频
- 7.5.5 模糊和锐化视频
- 7.5.6 画中画
- 7.5.7 在视频上添加文字
- 7.5.8 文件格式转换
- 7.5.9 时间操作
- 第8章 FFmpeg源码分析及实战
- 8.1 FFmpeg常用结构体分析
- 8.1.1 AVFormatConext
- 8.1.2 AVInputFormat
- 8.1.3 AVStream
- 8.1.4 AVCodecContext
- 8.1.5 AVPacket
- 8.1.6 AVCodec
- 8.1.7 AVFrame
- 8.1.8 AVIOContext
- 8.1.9 URLProtocol
- 8.1.10 URLContext
- 8.2 FFmpeg关键函数介绍
- 8.2.1 av_register_all函数
- 8.2.2 avformat_alloc_context函数
- 8.2.3 avio_open函数
- 8.2.4 avformat_open_input函数
- 8.2.5 avformat_find_stream_info函数
- 8.2.6 av_read_frame函数
- 8.2.7 av_write_frame函数
- 8.2.8 avcodec_decode_video2函数
- 8.3 FFmpeg案例(代码实现)
- 8.3.1 利用FFmpeg转换格式
- 8.3.2 在实时流中抓取图像
- 8.3.3 在视频中加入水印
- 8.3.4 FFmpeg音频解码
- 8.3.5 FFmpeg视频解码
- 8.4 FFPlay原理
- 8.4.1 注册所有容器格式和Codec
- 8.4.2 打开流文件
- 8.4.3 读取数据
- 8.4.4 保存数据
- 8.4.5 音视频同步
- 8.4.6 音视频输出
- 第9章 直播技术
- 9.1 直播原理
- 9.2 直播架构
- 9.3 直播过程
- 9.3.1 采集数据
- 9.3.2 渲染处理
- 9.3.3 编码数据
- 9.3.4 推流
- 9.3.5 CDN分发
- 9.3.6 拉流
- 9.3.7 播放流数据
- 9.3.8 直播推流完整案例
- 9.4 流媒体服务器搭建
- 9.5 FFmpeg推流到流媒体服务器的过程
- 9.6 直播优化那些事
- 9.6.1 卡顿优化
- 9.6.2 延时优化
- 9.6.3 数据代理优化
- 9.6.4 首屏秒开优化
- 9.6.5 弱网优化
- 9.6.6 运营商劫持优化
- 9.6.7 CDN节点优化
- 第10章 H.264编码及H.265编码
- 10.1 H.264编码框架
- 10.2 H.264编码原理
- 10.3 H.264码流分析
- 10.3.1 H.264编码格式
- 10.3.2 NAL Header
- 10.3.3 H.264的传输
- 10.3.4 H.264码流结构
- 10.3.5 H.264的Level和Profile说明
- 10.4 H.265编码框架
- 10.4.1 背景知识
- 10.4.2 H.265码流结构
- 第11章 视频格式分析
- 11.1 MP4格式分析
- 11.1.1 Box结构
- 11.1.2 MP4总体结构
- 11.1.3 movie(moov)box
- 11.1.4 media box
- 11.1.5 sample table(stbl)box
- 11.2 FLV格式分析
- 11.2.1 FLV文件结构
- 11.2.2 File Header(文件头)
- 11.2.3 Body
- 11.2.4 Tag
- 11.3 F4V格式分析
- 11.3.1 file type box
- 11.3.2 movie box
- 11.3.3 movie header box
- 11.3.4 track box
- 11.3.5 media box
- 11.3.6 media information box
- 11.3.7 sample table box
- 11.4 TS格式分析
- 11.4.1 TS格式介绍
- 11.4.2 TS流包含的内容
- 11.4.3 TS包头解析
- 11.4.4 TS包传输部分
- 11.4.5 节目专用信息PSI(Program Specific Information)
- 11.5 AVI格式分析
- 11.5.1 AVI整体结构
- 11.5.2 AVI信息块('hdrl' LIST块)
- 11.5.3 AVI数据块('movi' LIST块)
- 11.5.4 AVI索引块('idxl’子块)
- 11.6 ASF格式分析
- 11.6.1 认识ASF
- 11.6.2 ASF文件整体结构
展开全部
出版方
电子工业出版社
电子工业出版社成立于1982年10月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。