首页>参考读物>计算机科学与技术>软件与程序设计

音视频开发进阶指南:基于Android与iOS平台的实践
作者 : 展晓凯 著
出版日期 : 2017-12-07
ISBN : 978-7-111-58582-4
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 453
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书是积作者多年经验结晶的最佳实践,也是目前市场上唯一一本从基础概念到实践项目再到性能优化的音视频开发书籍。
书中首先通过介绍音视频的物理现象与基础概念,帮助读者建立模拟信号到数字信号转化的过程,然后重点介绍了如何在移动端开发音视频项目,其中包括开发中所需要了解的各种知识,如音视频的解码与渲染,采集与编码,音视频的处理与性能优化等;在此基础上最后综合当下最流行的直播场景,介绍如何将书中的已有项目改造、适配成为一个直播产品,进一步帮助读者自由、有效的开发出功能丰富、性能一流的音视频App。

图书特色

音视频开发进阶指南
基于Android与iOS平台的实践
展晓凯  魏晓红◎著
凝聚资深专家多年经验结晶和最佳实践,深入解析音视频开发技术
理论结合实战,全方面多角度指导读者快速深入开发,大幅提高学习和工作效率
4G的普及带来了移动互联网多媒体内容的繁荣,基本上每个大的App都会涉及视频和直播。但是真正要把音视频处理好,让用户仅仅依赖小小的手机处理器就能实现完美的音视频录制、特效处理以及高效的直播互动,并不是件容易的事情。本书是展晓凯基于音视频实践中积累的大量经验教训整理而成,是一本从入门到精通,教人如何在手机里处理音视频的技术书籍,希望能够对行业的整体技术水平有所帮助。
──唱吧CEO◎陈华
强烈推荐此书给音视频领域的新人,晓凯结合自身丰富实战经验,深入浅出地将音视频开发的诀窍娓娓道来,让音视频开发无难事。
──金山云合伙人,视频生态部总经理◎林松
晓凯专注于音视频领域多年,跳过各种坑、踩过各种雷,积累的理论和实际经验都相当丰富,相信他的这本书能传授他在音视频领域的经验,并帮助到有需要的移动开发者。
──iOS逆向专家◎吴航
这是一本能把我们引入音视频开发领域,并向更深层次翱翔的指南性图书。它不仅将长期以来看似遥不可及的技术拉到我们面前,还全方位、多角度地展示了这种技术在移动互联网市场中的运用。而最重要的是,这本书的作者具有多年音视频底层开发经验,并且开发了当今最火的手机KTV软件《唱吧》。我相信这本书所传递出来的知识和经验,会成为助我们成功的火种。所以,建议每一位想要从事相关工作的工程师或经理都来阅读这本书。
──Unity金牌讲师,灿黎网络CEO◎吕剑锋
︱内容简介︱
本书是资深音视频技术专家呕心沥血之作,积作者多年的经验结晶和最佳实践,也是目前市场上少有的从基础概念到实践项目,再到性能优化的音视频开发图书。
书中首先通过介绍音视频的物理现象与基础概念,帮助读者了解模拟信号到数字信号转化的过程,然后重点介绍了如何在移动端开发音视频项目,其中包括开发中所需要了解的各种知识,如音视频的解码与渲染,采集与编码,音视频的处理与性能优化等;最后,在此基础上综合当下最流行的直播场景,介绍了如何将书中的已有项目改造、适配成为一个直播产品,进一步帮助读者自由、有效地开发出功能丰富、性能一流的音视频App。
为了避免说教式的讲解给读者带来枯燥乏味的阅读体验,本书设置了大量生产环境下的案例。希望大家可以享受整个开发过程,享受自己开发的产品为人们生活带来便利的成就感。
︱作者简介︱







展晓凯,曾就职于淘宝,参与设计开发淘宝旅行的机票搜索业务;之后就职于115网盘,参与核心功能的研发;现就职于北京最淘科技有限公司,任音视频架构师,在公司的唱吧、唱吧直播间、火星三条产品线负责客户端核心的架构设计与开发工作,其中唱吧目前公布的数据已有几亿用户,月活也在千万量级。在工作与生活中非常乐于帮助同事与朋友,痴迷于研究互联网对整个人类历史发展的推动,同时作为这个大时代的一个小人物,也希望帮助更多的人参与到互联网行业中。

魏晓红,多年以来一直从事Android应用的开发工作,在Android点播、直播相关领域有着丰富的经验。由于开发的产品在印度有非常多的Android用户,所以积累了丰富的Android端适配经验,这让其在平时的工作与生活中乐于探讨技术,希望互联网能够改变人类生活。

图书前言

为什么要写这本书
整个音视频领域的架构以及开发已经演进了很长时间,从最开始的广电领域,到PC端的音视频领域,再到本书所介绍的移动端的音视频领域。尤其在这几年中,移动端音视频领域架构的变化是巨大的。在移动互联网的发展热潮中,我有幸从事了音视频领域的设计与开发,并且就职于最时尚的手机KTV——唱吧,这使得我开发出来的东西能够服务于几亿用户。对于音视频的移动端的应用,不论是开发还是使用,在近两年都达到了一个高峰,而作为一名工程师,如何高效地开发出一个音视频App,是一件非常困难的事情,特别是对于不太了解音视频概念的工程师。我从事软件开发已有7年多的时间,接触音视频领域也已经有5年多,在整个开发过程中,不同的时间段会遇到不同的挑战,尤其是在最开始涉足音视频领域的时候,真可谓举步维艰。首先,对于音视频的基础概念不是特别清楚,再者在工作中边学边做,很难对整个音视频领域有一个全面的了解,并且市面上没有相关成熟的资料从更高的层次来介绍音视频领域在移动端的演进与发展。这几年的设计实战与开发经验,以及带新人入门的众多感触,让我有了写这本书的动力,同时也形成了这本书的核心内容,我希望通过本书可以帮助更多想要在移动端音视频领域实现自己想法的工程师,让大家可以顺利地建立起自己的音视频App。我非常希望能为刚入门的读者或者遇到困难的读者提供帮助,希望大家可以享受整个开发的过程,享受自己开发的产品为人们的生活带来便利的成就感。另外,从整个音视频开发领域来讲,我也十分希望能够通过本书贡献出自己的绵薄之力。
读者对象
产品经理,这部分读者可以从中了解在移动端进行音视频开发会遇到的很多问题以及对应的优化策略,例如:如何通过音视频的统计数据为产品提供更加流畅的策略(视频观看的秒开、直播推流的流畅度、视频上传的成功率等)。
项目经理,这部分读者可以了解很多时下流行的名词与概念,不再会因为几个专业名词就让自己不知所措,并且有助于更好地评估音视频项目开发中的风险与进度。
测试人员,这部分读者可以学习在音视频App中由于处理过程不同而导致的瓶颈问题,书中也提到了一些自动化测试相关的命令以及工具,可以对CPU的负载情况、内存的占用情况、内存泄漏问题等进行分析。
架构师与工程师,这部分读者只需要一点移动开发经验就可以阅读本书了。当然如果你已经是一个高级移动开发工程师或者架构师,那么读起本书来将更加游刃有余。再进一步,如果你已经是移动领域的音视频开发工程师了,那么恭喜你,我们之间将会有一场关于技术领域内部的对话。
开设相关课程的高等院校。
如何阅读本书
为了避免说教式的讲解带来枯燥乏味的阅读体验,本书给出了大量的实例及生产环境下的案例。本书可分为四个部分:第一部分是入门,从理论基础开始讲解,最终会产生两个实践项目;第二部分是提高,基于第一部分的项目添加特效,形成一个完整的多媒体项目;第三部分是扩展,结合当下比较流行的直播场景进行实际案例分析;第四部分是工具,介绍当下大部分可以提高开发以及测试效率的工具。下面是各个章节的基本介绍。
第1章,介绍音视频的基础概念,其中包括音视频的基础数据格式、编码后的数据格式以及不同格式之间的相互转换等。
第2章,从零开始讲解如何搭建一个iOS项目和一个Android项目,并且添加C++支持,因为在音视频领域的开发中,有相当一部分的代码需要用C++来编写,这样就可以做到两个平台(Android和iOS平台)共用一套代码仓库,以提升开发效率。然后讲解交叉编译,因为在音视频开发过程中会用到很多第三方开源库,如果将这些库编译到我们的项目中,势必要进行交叉编译,因此本章会重点讲解这些内容。
第3章,探讨FFmpeg开源库。对于音视频开发来讲,FFmpeg开源库是众所周知也是普遍使用的。本章首先从编译开始,接着是命令行使用,再到源码结构,最后是API调用,以层层递进的方式对FFmpeg开源库展开介绍。
第4章,讲解如何利用各自平台的API进行声音与画面的渲染以及解码,对于画面的渲染,推荐使用OpenGL ES,两个平台可以使用同一个代码仓库。
第5章,实现一款视频播放器。有了前四章的基础,我们已经完全可以构建起一个视频播放器了。本书最大的特点就是经过几章基础知识的学习立即开始一个项目的实践,通过本章的视频播放器项目,我们将会熟悉播放器是如何工作的。
第6章,重点介绍音视频的采集与编码器。特别是硬件编解码器在各个平台上的使用,使得应用能够更高效(耗电更少、发热更少、界面更流畅)地运行在用户的手机上。
第7章,继续开发一个视频录制的新项目,该项目可以使我们更加熟悉音视频应用在各个平台下的实现。
第8章,讲解如何处理音频流。毕竟让别人听采集出来的干声是很不礼貌的,本章将利用各种特效来美化采集的声音。
第9章,讲解如何处理视频流,使视频中的颜值变得更高,毕竟爱美之心人皆有之。
第10章,在第7章的项目基础之上,增加第8章的音频特效和第9章的视频特效,从而构建一个实际生产过程中的多媒体应用。
第11章,继续以项目作为驱动,详细讲解如何基于之前学习的内容构建一个直播的应用,重点介绍推流以及拉流端,同时还涉及礼物特效、聊天以及第三方云服务的内容。
第12章,由于直播应用很难用一章的篇幅讲完,所以本章针对一些核心的处理进行讲解。
第13章,介绍常用的工具和排错方法,说明在日常开发中如何更有效率地解决问题,本章内容并不仅限于音视频的开发领域。
附录给出一些参考内容。
勘误和支持
由于作者水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为此,我特意创建了一个在线支持与应急方案的二级站点http://music-video.cn。你可以将书中的错误发布在Bug勘误表页面中,同时如果你遇到问题,也可以访问Q&A页面,我将尽量在线上为你提供最满意的解答。书中的全部源代码文件都将发布在这个网站上,我也会及时地进行相应的功能更新。如果你有更多的宝贵意见,也欢迎发送邮件至我的邮箱zhanxiaokai2008@126.com,我很期待听到你们的真挚反馈。
致谢
感谢唱吧与唱吧的每一位同事,是这个公司让我的职业生涯发展到了今天,也是这个公司让我能在音视频领域达到今天的成就,可以说没有唱吧就不会有这本书的问世。
感谢唱吧的每一位用户,感谢你们对唱吧的长期支持和贡献,没有你们就不会有唱吧的今天,也就不会有这本书的问世。
感谢我的老婆,感谢你对我工作以及写作的支持,是你在我背后默默做了很多事情,才让我把更多的时间和精力放到工作以及写作中。
感谢机械工业出版社华章分社的编辑Lisa老师,感谢你的魄力和远见,在这一年多的时间中始终支持我的写作,正是你的鼓励和帮助引导我顺利完成全部书稿。
感谢互联网,我们在互联网上迈出的任何一步都是人类历史向前迈进的一步,感谢众多互联网人的辛苦工作,为我们创造了这么多机遇。
谨以此书献给我最亲爱的家人、同事,以及众多互联网从业者。

展晓凯
2017年9月于北京

上架指导

计算机\程序设计

封底文字

本书主要介绍移动端的音视频开发,为了避免说教式的讲解给读者带来枯燥乏味的阅读体验,书中提供了大量的实例。本书可分为四个部分,第一部分是入门篇, 从理论基础开始讲解,最终有两个实践项目会产生,第二部分是提高篇,会基于第一部分的项目添加特效,形成一个完整的多媒体项目,第三部分会结合当下比较流行的直播场景进行实际案例分析,第四部分是工具篇,介绍当下大部分可以提高开发以及测试过程中效率的工具。
本书可作为从事移动音视频开发的工程师、项目经理、产品经理、架构师等的参考书。

推荐序

Foreword?推 荐 序 一
我的第一部智能手机是多普达565,当时使用的是Windows Mobile操作系统,现在看来,不管是操作交互,还是系统的整体能力,都与今天的智能手机有着天壤之别。但是,即便是那样的操作系统,也已经足够让当时的我认识到一个真正的操作系统能给一部随身设备赋予的强大能力。智能手机后来这十几年的发展还是超出了很多人的预料,很难想象,如果没有现在的高速数据网络和每个人手头的这个小终端,我们的工作和生活会有多少不方便的地方。
生活在这个时代的程序员是足够幸运的,信息化的无限渗透也意味着有想法、有能力的程序员对人们生活范围的影响越来越大。我与很多资深的开发人员都有过交流,基本上能把这些人分成两类。一类是以对技术本身的钻研为目标的技术人员,他们所关注的是架构是不是足够先进,可扩展性如何,系统整体的负载能力,遇到错误时的鲁棒性等。总之,他们内心的成就感来自是否把技术做到了极致,同行(或者自己)看到的时候,会不会由衷地说这东西真棒。还有一类技术人员,他们的成就感来自自己的工作成果是否能够直接对使用者产生影响。相对技术本身的挑战,这类人更在乎自己所做的东西是否真正被身边的人使用,使用者用到自己作品时的感受,以及是否真正给使用者和社会带来了帮助。两类人没有高低之分,倒有点像理论研究和应用研究的关系,两个方向相辅相成,彼此成就,彼此推动。
音视频技术的发展正好处在理论和应用的十字路口。各种音视频技术天生就与老百姓的生活距离很近,拍照、唱歌、小视频、瘦脸、美颜、大混音,基本上算是大众手机里最常用的一些功能了。这些功能背后的技术,也会因用户的需求推动而快速发展。从软件到硬件,从各种人脸识别的算法到越来越强大的摄像头或是专用的DSP芯片,摩尔定律在这个细分领域的发挥可以算是淋漓尽致了,这也对有志于在这个领域发展的研发人员提出了更高的要求:一方面,要能沉得下去,音视频相关的底层技术可以说是CS领域里相当难啃的一块硬骨头,对算法、编码甚至是数学基础都有很高的要求;另一方面,还要能经常抬起头,不只是要跟上相关领域的快速发展,也要理解和挖掘用户的真实需求,这可以算是CS领域里挑战很大同时成就感也很大的困难模式了。
本书的作者展晓凯是音视频领域的权威专家。在几年间的持续研究中,他总结出了一套在音视频领域比较系统的工程实践方法,希望这些总结能够帮助到对相关领域感兴趣的你。如果能进一步影响更多的人,将是对本书作者最大的鼓励和褒奖。

田 然
2017年9月于北京


Foreword?推 荐 序 二
随着智能手机的出现,音视频传感器比以往任何时候都更加接近用户,可以说,移动互联网时代其实也是音视频内容爆炸的时代。几乎每个应用都希望能尽可能地开启用户所有的权限,让用户把自己的每时每刻都上传和分享出来,于是即时聊天IM几乎走进了每一个App。而这一两年的直播大战的背后,更是让直播这种富媒体几乎变成了各类App的标配功能,以至于市场对音视频研发人才求之若渴,音视频的学习材料也一时洛阳纸贵,由此催生出来的各种大小公司、大小产业也是层出不穷,业内对音视频处理的知识和经验的分享更是如火如荼。然而,音视频处理实在是一门艰深的学问,从傅里叶变换到差分编码等各种理论,再到充满差异化甚至Bug的安卓设备的现实应用环境,既要在国内复杂的网络环境下尽力满足用户视听观感的流畅感觉,又希望让小小的移动设备物尽其用来为用户提供最极致的感官体验,而这些灼烧无数程序员脑细胞的问题,实在不是一两篇长文就可以简单讲清楚的。若要让一个几无基础的开发者能够系统地掌握音视频的处理知识,确有必要撰写一本图书并通过具体实例来详细讲解才行。
我认识本书的作者展晓凯已经五年多了,他几乎是唱吧最勤奋的技术人员,在唱吧浩瀚的代码库里,到处都留有他的成果。唱吧是中国颇具影响力的K歌产品之一,从2012年雄踞苹果榜首之后,就再也没有离开过榜单,多年来其为用户创造了无数新奇的功能和体验,从各种振奋人心的混响,到节奏感逼人的自动说唱,所有的这些功能,都是出自展晓凯和他所在的三五个人的小团队之手。而以唱吧的用户体量,他们自然也遇到了许多问题,从各种花屏、黑屏、啸叫、白噪等通用技术问题,到用户手机上因形形色色系统或硬件差异而产生的稀奇古怪的问题,也无一不是展晓凯所在的团队逐个去解决的。可以说,发展到今天,唱吧几乎拥有业内最丰富的音视频处理经验,而这些经验中的精华,如今终于有机会整理付梓,实在是唱吧的一点骄傲,也是业内同行的一份福音。
虽然与展晓凯一起并肩战斗了四五年,但我本人并没有太多机会详细参与每一个音视频问题的处理,如今通读完这本书的原稿,我深感收获不小。本书是展晓凯花费了无数心血的作品,其中的每一行代码每一个实例都来自他日常工作中实际问题的总结。本书也许不是市面上唯一一本关于音视频处理的著作,但它的出现,足以为市场带来一个特有的完整的视角,并令无数致力于打造移动设备上音视频处理完美体验的程序员受益!

黄全能
2017年9月于北京

图书目录

推荐序一
推荐序二
前言
第1章 音视频基础概念 1
1.1 声音的物理性质 1
1.1.1 声音是波 1
1.1.2 声波的三要素 2
1.1.3 声音的传播介质 3
1.1.4 回声 3
1.1.5 共鸣 4
1.2 数字音频 4
1.3 音频编码 6
1.4 图像的物理现象 7
1.5 图像的数值表示 8
1.5.1 RGB表示方式 8
1.5.2 YUV表示方式 9
1.5.3 YUV和RGB的转化 10
1.6 视频的编码方式 10
1.6.1 视频编码 10
1.6.2 编码概念 11
1.7 本章小结 13
第2章 移动端环境搭建 14
2.1 在iOS上如何搭建一个基础项目 14
2.2 在Android上如何搭建一个基础项目 21
2.3 交叉编译的原理与实践 26
2.3.1 交叉编译的原理 26
2.3.2 iOS平台交叉编译的实践 27
2.3.3 Android平台交叉编译的实践 33
2.3.4 使用LAME编码MP3文件 38
2.4 本章小结 42
第3章 FFmpeg的介绍与使用 43
3.1 FFmpeg的编译与命令行工具的使用 43
3.1.1 FFmpeg的编译 43
3.1.2 FFmpeg命令行工具的使用 51
3.2 FFmpeg API的介绍与使用 60
3.3 FFmpeg源码结构 68
3.3.1 libavformat与libavcodec介绍 68
3.3.2 FFmpeg通用API分析 69
3.3.3 调用FFmpeg解码时用到的函数分析 70
3.3.4 调用FFmpeg编码时用到的函数分析 71
3.3.5 面向对象的C语言设计 72
3.4 本章小结 74
第4章 移动平台下的音视频渲染 75
4.1 AudioUnit介绍与实践 75
4.2 Android平台的音频渲染 84
4.2.1 AudioTrack的使用 85
4.2.2 OpenSL ES的使用 87
4.3 视频渲染 90
4.3.1 OpenGL ES介绍 90
4.3.2 OpenGL ES的实践 91
4.3.3 上下文环境搭建 98
4.3.4 OpenGL ES中的纹理 104
4.4 本章小结 109
第5章 实现一款视频播放器 110
5.1 架构设计 110
5.2 解码模块的实现 115
5.3 音频播放模块的实现 118
5.3.1 Android平台的音频渲染 118
5.3.2 iOS平台的音频渲染 119
5.4 画面播放模块的实现 121
5.4.1 Android平台的视频渲染 121
5.4.2 iOS平台的视频渲染 122
5.5 AVSync模块的实现 124
5.5.1 维护解码线程 124
5.5.2 音视频同步 125
5.6 中控系统串联起各个模块 127
5.6.1 初始化阶段 127
5.6.2 运行阶段 128
5.6.3 销毁阶段 129
5.7 本章小结 130
第6章 音视频的采集与编码 131
6.1 音频的采集 131
6.1.1 Android平台的音频采集 131
6.1.2 iOS平台的音频采集 134
6.2 视频画面的采集 137
6.2.1 Android平台的视频画面采集 137
6.2.2 iOS平台的视频画面采集 146
6.3 音频的编码 156
6.3.1 libfdk_aac编码AAC 156
6.3.2 Android平台的硬件编码器MediaCodec 158
6.3.3 iOS平台的硬件编码器AudioToolbox 161
6.4 视频画面的编码 166
6.4.1 libx264编码H264 166
6.4.2 Android平台的硬件编码器MediaCodec 172
6.4.3 iOS平台的硬件编码器 175
6.5 本章小结 184
第7章 实现一款视频录制应用 185
7.1 视频录制的架构设计 185
7.2 音频模块的实现 188
7.2.1 音频队列的实现 189
7.2.2 Android平台的实现 191
7.2.3 iOS平台的实现 194
7.3 音频编码模块的实现 198
7.3.1 改造编码器 198
7.3.2 编码器适配器 199
7.4 画面采集与编码模块的实现 202
7.4.1 视频队列的实现 202
7.4.2 Android平台画面编码后入队 203
7.4.3 iOS平台画面编码后入队 204
7.5 Mux模块 205
7.5.1 初始化 206
7.5.2 封装和输出 208
7.5.3 销毁资源 212
7.6 中控系统串联起各个模块 213
7.7 本章小结 214
第8章 音频效果器的介绍与实践 215
8.1 数字音频基础 215
8.1.1 波形图 215
8.1.2 频谱图 217
8.1.3 语谱图 219
8.1.4 深入理解时域与频域 219
8.2 数字音频处理:快速傅里叶变换 222
8.3 基本乐理知识 229
8.3.1 乐谱 229
8.3.2 音符的音高与十二平均律 231
8.3.3 音符的时值 233
8.3.4 节拍 233
8.3.5 MIDI格式 234
8.4 混音效果器 235
8.4.1 均衡效果器 236
8.4.2 压缩效果器 239
8.4.3 混响效果器 240
8.5 效果器实现 243
8.5.1 Android平台实现效果器 243
8.5.2 iOS平台实现效果器 252
8.6 本章小结 255
第9章 视频效果器的介绍与实践 256
9.1 图像处理的基本原理 256
9.1.1 亮度调节 257
9.1.2 对比度调节 258
9.1.3 饱和度调节 259
9.2 图像处理进阶 259
9.2.1 图像的卷积过程 260
9.2.2 锐化效果器 260
9.2.3 高斯模糊算法 262
9.2.4 双边滤波算法 263
9.2.5 图层混合介绍 264
9.3 使用FFmpeg内部的视频滤镜 266
9.3.1 FFmpeg视频滤镜介绍 266
9.3.2 滤镜图的构建 267
9.3.3 使用与销毁滤镜图 269
9.3.4 常用滤镜介绍 270
9.4 使用OpenGL ES实现视频滤镜 272
9.4.1 加水印 273
9.4.2 添加自定义文字 278
9.4.3 美颜效果器 282
9.4.4 动图贴纸效果器 284
9.4.5 主题效果器 288
9.5 本章小结 291
第10章 专业的视频录制应用实践 292
10.1 视频硬件解码器的使用 292
10.1.1 初始化信息准备 292
10.1.2 VideoToolbox解码H264 294
10.1.3 MediaCodec解码H264 298
10.2 音频效果器的集成 304
10.2.1 Android音效处理系统的实现 305
10.2.2 iOS音效处理系统的实现 308
10.3 一套跨平台的视频效果器的设计与实现 309
10.4 将特效处理库集成到视频录制项目中 315
10.4.1 Android平台特效集成 316
10.4.2 iOS平台特效集成 321
10.5 本章小结 325
第11章 直播应用的构建 327
11.1 直播场景分析 327
11.2 拉流播放器的构建 329
11.2.1 Android平台播放器增加后处理过程 329
11.2.2 iOS平台播放器增加后处理过程 332
11.3 推流器的构建 335
11.4 第三方云服务介绍 340
11.5 礼物系统的实现 341
11.5.1 Cocos2dX项目的运行原理 342
11.5.2 关键API详解 344
11.5.3 实现一款动画 348
11.6 聊天系统的实现 350
11.6.1 Android客户端的WebSocket实现 351
11.6.2 iOS客户端的WebSocket实现 352
11.7 本章小结 353
第12章 直播应用中的关键处理 354
12.1 直播应用的细节分析 354
12.1.1 推流端细节分析 354
12.1.2 拉流端细节分析 355
12.2 推流端的关键处理 355
12.2.1 自适应码率的实践 356
12.2.2 统计数据保证后续的应对策略 361
12.3 拉流端的关键处理 363
12.3.1 重试机制的实践 364
12.3.2 首屏时间的保证 366
12.3.3 统计数据保证后续的应对策略 370
12.4 本章小结 371
第13章 工欲善其事,必先利其器 372
13.1 Android平台工具详解 372
13.1.1 ADB工具的熟练使用 372
13.1.2 MAT工具检测Java端的内存泄漏 377
13.1.3 NDK工具详解 387
13.1.4 Native层的内存泄漏检测 389
13.1.5 breakpad收集线上Crash 396
13.2 iOS使用Instruments诊断应用 399
13.2.1 Debug Navigator 399
13.2.2 Time Profiler 400
13.2.3 Allocations 402
13.2.4 Leaks 403
13.3 本章小结 405
附录A 通过Ne10的交叉编译输入理解ndk-build 406
附录B 编码器的使用细节 415
附录C 视频的表示与编码 423

教学资源推荐
作者: 宋晓宇 主编 赵艳平 副主编 杨艳春 李世伟 张洁 编著
作者: (美)Y.Daniel Liang 著 阿姆斯特朗亚特兰大州立大学
作者: [美]本贾尼·斯特劳斯特鲁普(Bjarne Stroustrup)著
参考读物推荐
作者: Kevin Mukhar Chris Zelenak James L.Weaver Jim Crume
作者: [美]史蒂夫·霍夫曼(Steve Hoffman) 斯里纳特·佩雷拉(Srinath Perera)著
作者: (美)Kevin Brothaler 著