作者简介: Bob McCune是iOS咨询和培训公司TapHarmonic(位于明尼苏达州明尼阿波利斯市)的所有者。他具有丰富的iPhone和iPad开发经验,对相关的技术挑战和机遇了如指掌。McCune目前帮助多个客户开发大型企业级iOS应用程序。他的2012 Infinite Skills 视频培训课程Learning iOS Programming已成为全球最优秀的iOS培训课程之一。他创立并领导着Minnesota CocoaHeads用户组。内容简介: 快速掌握使用AV Foundation开发iOS和OS X应用的技术 如果想开发富媒体iOS或OS X应用程序,你可以使用苹果公司推出的AV Foundation框架来实现诸多神奇功能。不过AV Foundation框架基于最前沿的语言特征,极其庞大,而且相关文档较少;现在,Bob McCune撰写的这本  AV Foundation开发秘籍——实践掌握iOS & OS X应用的视听处理技术  为你铺就一条精通掌握这些卓越技术的高效途径。 McCune生动的讲解和精彩的GitHub示例项目已帮助数以千计的苹果开发者领略到AV Foundation的魅力。McCune基于丰富的开发经验,带你创建紧贴实用的应用程序,让你切实掌握相关技术。 通过学习本书,你将创建语音备忘录、自定义视频播放器、视频编辑器和图片/视频相机应用程序,将掌握从头开发高级媒体应用程序需要的所有技术。每章都提供了McCune精心编写的“挑战”内容和完整的初始应用程序,使你更深入地理解并最大限度地利用突破性的AV Foundation媒体框架。涵盖内容◆ 了解AV Foundation如何应用于苹果媒体环境及其每个核心功能区域◆ 为应用添加音频播放和录制功能◆ 为视频播放功能增加更丰富、更动态的体验◆ 使用AV Kit让程序拥有类似于iOS Videos和OS X QuickTime播放器的用户界面◆ 使用OpenGL ES和Core Image开发具有实时视频处理功能的媒体捕捉应用◆ 实现自定义视频播放器◆ 整合高级捕捉功能,如视频缩放、人脸检测、条码扫描和高帧率捕捉◆ 混合多音频轨道和自动音量控制◆ 创建高级的非线性、无损编辑应用◆ 添加高级视频编辑功能,如视频过渡和动画效果
前 言 我们非常激动地看到:在过去几年中,数字媒体经历了革命性的变化。iPhone的推出和移动计算的兴起,以及高速网络的发展,从根本上改变了人们创建、使用和分享数字媒体的习惯。人们不再限于在家里观看视频。今天的视频焕发活力,任何人都可以随时随地欣赏它们。捕捉高分辨、有个性的照片不再是有着昂贵摄影设备的专业摄影师的专利,如今只需要在iOS设备上点点手指即可实现。电影制作者和音乐家们以前只能在专业工作室完成理想的作品,而如今只需一台笔记本电脑或一台移动设备即可。数字媒体革命正在发生,不过这一过程的确刚刚开始,对于iOS和OS X来说,这一革命的核心技术就是AV Foundation。 有机会撰写本书令我备感荣幸,因为我认为这是一本姗姗来迟的专业书。App Store中很多排名靠前的应用程序都用到了AV Foundation,不过这一框架对于大部分开发者而言并不很好掌握。学习AV Foundation框架的使用具有一定的挑战性。它是一个庞大的高级框架,具有很多特性和功能。AV Foundation Programming Guide文档虽然在过去一年中进行了改进,但仍不够完善,仅仅介绍了有关AV Foundation的一些浅显概念。苹果公司在ADC上给出了大量有用的示例项目,不过对于初学者来说,就像把一个还没学会游泳的人推入深水池一样。 我撰写这本书的目标就是让AV Foundation框架更容易理解。本书并不是要成为AV Foundation框架领域的权威参考,而是把注意力放在框架最关键的几个部分,让开发者能够完全掌握该框架的概念、功能和习惯用法。我们通过紧贴实用的示例应用程序一步一步完成讲述,从最简单的语音备忘应用程序到诸如iOS平台的iMovie的功能齐全的视频编辑器。对我来说读者朋友们能够牢牢掌握这些概念非常重要,并让大家掌握如何使用AV Foundation的功能在实际应用程序中加以应用。 其实在早些年我就希望推出一本AV Foundation开发秘籍这样的图书,并希望能够帮助大家在iOS和OS X平台上开发出优异的媒体应用程序! 本书读者对象 本书面向需要学习如何开发数字媒体应用程序的Mac或iOS开发者。我们假设大家可能没有AV Foundation或媒体应用程序的开发经验,不过认为大家都具有苹果公司平台下的框架、模式和概念的开发经验。确切地讲,你需要熟悉以下知识: C和Objective-C:本框架依赖于很多高级语言和Cocoa特性,比如Grand Central Dispatch (GCD)、Blocks和Key-Value Observing相关知识。你不需要是GCD专家,不过应该了解调度语法和调度队列的基础知识。AV Foundation是一个Objective-C框架,不过我们经常会用到框架支持的C语言库,尤其在一些高级场景中,所以你也应该具备一些C语言的基础知识。 Core Animation(可选):AV Foundation总的来说是一个不可见框架,不过在渲染视频内容时会用到一些Core Animation的知识。掌握Core Animation框架的知识虽然不是必需的,但很有帮助。 绘制框架(可选):高级用例中经常会用到绘制和渲染框架,如Quartz、Core Image、Open GL或OpenGL ES。本书对如何整合这些技术进行讲解,但并未假设大家知道这些框架的用法。 本书组织结构 AV Foundation是一个包含了许多功能和特性的大框架。根据相关的功能把框架进行分解,本书共分3个主要部分:“AV Foundation基础”、“媒体捕捉”以及“媒体创建和编辑”。第Ⅰ部分“AV Foundation基础”介绍了框架的基础知识和对于大部分AV Foundation应用程序都适用的知识点。第Ⅱ部分“媒体捕捉”主要介绍有关捕捉的API,并用学到的方法创建静态图片和视频的捕捉应用程序。最后一部分“媒体创建和编辑”更深入地讨论AV Foundation在创建和编辑媒体资源时的功能和特性。 本书各章综述如下: 第1章:AV Foundation入门——该章是学习AV Foundation的第一步,对框架进行了解析,帮助读者了解相关的功能和特性。该章还对媒体相关知识给出了高级概述,并介绍诸如数字采样和媒体压缩等方面的知识,掌握这些知识对本书的学习很有帮助。 第2章:播放和录制音频——AV Foundation关于播放和录制音频的功能是该框架中最常用的功能。本章将讨论如何使用框架的音频类,并使用这些类创建音频循环器和语音备忘录。同时介绍如何使用音频会话来帮助开发者优化应用程序的音频使用体验。 第3章:资源和元数据——该框架中大部分对象的创建都是围绕资源的概念展开的,资源代表了媒体资源,比如QuickTime影片或MP3音频文件。你可以学到如何使用资源对象,并通过构建元数据编辑应用程序来了解如何使用该框架的元数据特性。 第4章:视频播放——播放视频是AV Foundation实现的最核心功能之一。在很多媒体应用程序中,这一功能都是最主要或次要的功能。在该章你会详细了解如何使用框架的播放功能来创建一个自定义的视频播放器,该视频播放器带有全部播放控件、字幕并支持Airplay。 第5章:AV Kit用法——AV Kit是在Mac OS X 10.9和现在的iOS 8版本中引入的一个新框架。它可以让你快速创建与OS X中的QuickTime Player和iOS中的视频应用程序具有相同用户界面的视频播放器。如果你希望创建一个忠于原始操作系统,同时又具有AV Foundation视频API全部功能的播放器,那么这个框架是一个很好的选择。 第6章:捕捉媒体——该章介绍了框架的音频和视频捕捉功能。学习使用这些功能来控制iOS设备和最新Mac设备内置的摄像头硬件。这是该框架应用最广的一个领域,可以帮助开发者创建出功能强大的主流摄像头捕捉应用程序。 第7章:高级捕捉功能——该章介绍了大量高级捕捉相关的知识。学习使用元数据捕捉来实现条码扫描和人脸检测功能。学习使用框架提供的高级缩放功能。同时还学习如何支持高帧率捕捉,为应用程序添加慢动作效果。学习如何整合OpenGL ES来处理摄像头捕捉到的视频样本,这一方面又包含了大量可能的处理方法。 第8章:读取和写入媒体——AV Foundation提供了很多高级功能,不过从来没有关闭底层开发的大门。该章会讨论该框架的底层读写工具,使你对媒体资源的处理更加随心所欲。学习如何从资源对象中读取音频样本并实现音频示波器的展示。同时还使用摄像头捕捉API来实现实时视频效果。 第9章:媒体资源的组合和编辑——从该章开始我们将学习该框架有关媒体编辑的功能。这是该框架非常强大的功能之一,可对多个来源的媒体进行组合和编辑来创建新媒体。这里开始创建一个本书最复杂的应用程序——15 Seconds,它是一个与iOS下的iMovie类似的视频编辑器。 第10章:混合音频——创建组合媒体对象时,最重要的一点是对多个音频轨道的混合。该章将介绍如何使用音频渐隐等混合技术帮助我们优化音频的呈现。 第11章:创建视频过渡效果——视频过渡在表示视频中的位置或故事情节发生变化时经常用到,AV Foundation为组合资源对象提供了应用视频过渡效果的可靠支持。在该章你会学到使用该框架的视频组合功能来控制多个视频轨道的组合。在15 Seconds应用程序中实际使用这些功能,为它添加溶解、推出和擦除等过渡效果。 第12章:动画图层内容——该章讨论如何使用Core Animation框架添加标题、下沿字幕和其他动画叠加效果。学习如何使用Core Animation创建与视频播放做到无缝同步的动画序列。还讨论如何将这些动画效果整合到最终导出的视频中。 关于示例代码 我们将大量时间都花在开发本书的示例应用程序上,学习AV Foundation的一个主要目标是在实际应用程序的创建中用到各种特性和功能。为达到这一目的,在本书整个讲述过程中包含了大量真实的示例项目。这些项目可以作为参考,或者甚至可以对它们进行自定义作为你自己应用程序的基础。一些项目很简单(如Hello AVF),一些项目很复杂(如15 Seconds),但每个项目都展示了一个或多个框架功能,并且创建项目的过程很有趣。 AV Foundation在OS X和iOS平台上的应用基本相同,所有示例项目虽然以一个平台为例进行讲解,不过都适用于两个平台。示例应用程序已经创建好了用户界面和支持代码,并且代码部分也仅仅关注有关AV Foundation内容的实现。这样便于读者更好地阅读应用程序代码而不需要考虑平台的区别,从OO设计的角度来讲述,使代码具有很好的可重用性并且便于测试。 示例项目可以在以下Github网站找到: 还可以访问www.tupwk.com.cn/downpage,输入本书的书名或中文ISBN,下载部分资料。 联系作者 可以通过个人主页联系Bob,也可在Twitter上(@bobmccune)找到他。