内容简介
快速掌握使用AV Foundation开发iOS和OS X应用的技术
如果想开发富媒体iOS或OS X应用程序,你可以使用苹果公司推出的AV Foundation框架来实现诸多神奇功能。不过AV Foundation框架基于最前沿的语言特征,极其庞大,而且相关文档较少;现在,Bob McCune撰写的这本 AV Foundation开发秘籍——实践掌握iOS & OS X应用的视听处理技术 为你铺就一条精通掌握这些卓越技术的高效途径。
McCune生动的讲解和精彩的GitHub示例项目已帮助数以千计的苹果开发者领略到AV Foundation的魅力。McCune基于丰富的开发经验,带你创建紧贴实用的应用程序,让你切实掌握相关技术。
通过学习《AV Foundation开发秘籍:实践掌握iOS & OS X 应用的视听处理技术》,你将创建语音备忘录、自定义视频播放器、视频编辑器和图片/视频相机应用程序,将掌握从头开发高级媒体应用程序需要的所有技术。每章都提供了McCune精心编写的“挑战”内容和完整的初始应用程序,使你更深入地理解并最大限度地利用突破性的AV Foundation媒体框架。
涵盖内容
◆ 了解AV Foundation如何应用于苹果媒体环境及其每个核心功能区域
◆ 为应用添加音频播放和录制功能
◆ 为视频播放功能增加更丰富、更动态的体验
◆ 使用AV Kit让程序拥有类似于iOS Videos和OS X QuickTime播放器的用户界面
◆ 使用OpenGL ES和Core Image开发具有实时视频处理功能的媒体捕捉应用
◆ 实现自定义视频播放器
◆ 整合高级捕捉功能,如视频缩放、人脸检测、条码扫描和高帧率捕捉
◆ 混合多音频轨道和自动音量控制
◆ 创建高级的非线性、无损编辑应用
◆ 添加高级视频编辑功能,如视频过渡和动画效果
作者简介
Chris Georgenes,是一名Adobe Flash设计师和动画师,长期从事自由职业。此前,Chris为一家小型软件公司制作网络动画电视节目,如ABC和Cartoon Network。几年前他开始为Acclaim、Playdom和Disney Interactive公司设计游戏。Chris目前担任移动应用GSN Casino(Game Show Network的新数码产品)的创意总监,该应用的极大成功让Chris备感快乐。Chris曾撰写多本书籍,经常公开发表演讲,爱喝咖啡;在35年的职业生涯中,一直十分迷恋音乐。
目录
第Ⅰ部分 AV Foundation基础第1章 AV Foundation入门1.1 AV Foundation的含义1.2 AV Foundation的适用范围1.3 解析AV Foundation1.3.1 音频播放和记录1.3.2 媒体文件检查1.3.3 视频播放1.3.4 媒体捕捉1.3.5 媒体编辑1.3.6 媒体处理1.4 了解数字媒体1.4.1 数字媒体采样1.4.2 音频采样介绍1.5 数字媒体压缩1.5.1 色彩二次抽样1.5.2 编解码器压缩1.5.3 视频编解码器1.5.4 音频编解码器1.6 容器格式1.7 初识AV Foundation1.8 小结1.9 挑战第2章 播放和录制音频2.1 Mac和iOS的音频环境2.2 理解音频会话2.2.1 音频会话分类2.2.2 配置音频会话2.3 使用AVAudioPlayer播放音频2.3.1 创建AVAudioPlayer2.3.2 对播放进行控制2.4 创建Audio Looper2.5 配置音频会话2.6 处理中断事件2.7 对线路改变的响应2.8 使用AVAudioRecorder录制音频2.8.1 创建AVAudioRecorder2.8.2 控制录音过程2.9 创建Voice Memo应用程序2.9.1 配置音频会话2.9.2 实现录音功能2.10 使用Audio Metering2.11 小结第3章 资源和元数据3.1 理解资源的含义3.2 创建资源3.2.1 iOS Assets库3.2.2 iOS iPod库3.2.3 Mac iTunes库3.3 异步载入3.4 媒体元数据3.5 使用元数据3.5.1 查找元数据3.5.2 使用AVMetadataItem3.6 创建MetaManager应用程序3.6.1 THMediaItem3.6.2 THMetadata的实现3.6.3 数据转换器3.6.4 简单转换3.6.5 转换Artwork3.6.6 转换注释3.6.7 转换音轨数据3.6.8 转换唱片数据3.6.9 转换风格数据3.6.10 完成THMetadata3.7 保存元数据3.8 小结3.9 挑战第4章 视频播放4.1 播放功能综述4.1.1 AVPlayer4.1.2 AVPlayerLayer4.1.3 AVPlayerItem4.2 播放秘籍4.3 处理时间4.4 创建视频播放器4.4.1 创建视频视图4.4.2 创建视频控制器4.4.3 监听状态改变4.5 时间监听4.5.1 定期监听4.5.2 边界时间监听4.5.3 条目结束监听4.5.4 播放栏委托回调4.6 创建可视搓擦条4.7 显示字幕4.8 Airplay4.9 小结4.10 挑战第5章 AV Kit用法5.1 针对iOS平台的AV Kit框架5.2 针对Mac OS X平台的AV Kit框架5.3 迈出第一步5.4 控件类型5.4.1 内嵌类型5.4.2 浮动类型5.4.3 最小化类型5.4.4 None类型5.5 拓展学习5.6 章的处理5.7 启用修剪5.8 导出5.9 传统资源的兼容5.10 小结5.11 挑战
第Ⅱ部分 媒体捕捉第6章 捕捉媒体6.1 捕捉功能综述6.1.1 捕捉会话6.1.2 捕捉设备6.1.3 捕捉设备的输入6.1.4 捕捉的输出6.1.5 捕捉连接6.1.6 捕捉预览6.2 简单的秘籍6.3 创建相机应用程序6.3.1 创建预览视图6.3.2 创建捕捉控制器6.3.3 设置捕捉会话6.3.4 启动和停止会话6.3.5 处理隐私需求6.3.6 切换摄像头6.3.7 配置捕捉设备6.3.8 调整焦距和曝光6.3.9 调整闪光灯和手电筒模式6.3.10 拍摄静态图片6.3.11 使用Assets Library框架6.3.12 视频捕捉6.4 小结6.5 挑战第7章 高级捕捉功能7.1 视频缩放7.2 人脸检测7.3 机器可读代码识别7.3.1 一维条码7.3.2 创建条码扫描器7.3.3 创建条码识别的委托7.4 使用高帧率捕捉7.4.1 高帧率捕捉综述7.4.2 支持高帧率捕捉7.5 视频处理7.6 学习CMSampleBuffer7.6.1 样本数据7.6.2 格式描述7.6.3 时间信息7.6.4 附加的元数据7.6.5 AVCaptureVideoData-Output7.7 小结7.8 挑战第8章 读取和写入媒体8.1 综述8.1.1 AVAssetReader8.1.2 AVAssetWriter8.1.3 读写示例8.2 创建音频波形视图8.2.1 读取音频样本8.2.2 缩减音频样本8.2.3 渲染音频样本8.3 捕捉录制的高级方法8.4 小结8.5 挑战
第Ⅲ部分 媒体创建和编辑第9章 媒体的组合和编辑9.1 组合媒体9.2 时间的处理9.2.1 CMTime9.2.2 CMTimeRange9.3 基础方法9.4 15 Seconds示例应用程序9.5 创建一个组合9.6 导出组合9.7 小结9.8 挑战第10章 混合音频10.1 混合音频10.2 15 Seconds应用程序中的音频混合10.3 小结10.4 挑战第11章 创建视频过渡效果11.1 综述11.1.1 AVVideoComposition11.1.2 AVVideoComposition- Instruction11.1.3 AVVideoCompositionLayer-Instruction11.2 概念阶段11.2.1 部署视频布局11.2.2 定义重叠区域11.2.3 计算通过和过渡的时间范围11.2.4 创建组合和层指令11.2.5 创建和配置AVVideo-Composition11.2.6 创建视频组合的捷径11.3 为15 Seconds应用程序添加视频过渡11.4 小结11.5 挑战第12章 动画图层内容12.1 Core Animation应用12.2 在AV Foundation中使用Core Animation12.2.1 使用AVSynchronizedLayer播放12.2.2 使用AVVideoComposition-CoreAnimationTool导出12.3 15 Seconds应用程序:添加动画标题12.4 准备组合12.4.1 播放时应用Core Animation12.4.2 导出时应用Core Animation12.5 小结12.6 挑战
精彩书摘
《AV Foundation开发秘籍:实践掌握iOS & OS X 应用的视听处理技术》:
(3)在transport象上设置当前时间和总长。将用户界面上展示的时间与播放的媒体进行同步。transport对象无法识别CMTime,只能处理以秒为单位的NSTime lnterval类型的时间。我们使用CMTime Get Seconds函数将CMTime值转换为秒。Core Media定义了常量kCMTime Zero,开发者可以将它作为开头的current Time参数,使用播放条目的duration属性值作为第二个参数。
(4)向播放栏传递一个标题字符串,来展示资源的标题(如果资源的元数据中存在标题信息)。AVAsset没有title属性,这是我们加AAVAsset中的一个分类方法,目的是增加代码的可读性。这个分类方法用到了上一章介绍的元数据API,具体地讲,从资源的common Metadata得到AVMetadata Common Key Title值。具体细节参考AVAsset+THAdditions。
(5)现在就准备调用AVPlayer的play方法进行播放了。最后,在完成对status关键路径的监听后,我们希望将作为监听器的self移除。
现在可以启动应用程序并开始播放其中一个视频。虽然视频已经播放,不过用户界面上的控件还没有提供任何功能,并且随着时间的推移用户界面也没有相应的反馈信息。这就又回到了addPlayer ItemTime Observer方法上,我们需要在该方法上实现相关的功能,不过在此之前我们需要先学习如何得知AVPlayer的时间变化。
4.5时间监听
我们已经讨论过并了解到如何使用KVO来观察播放条目的status属性。KVO对于常见的状态监控表现得很出色,并且可以监听AVPlayerItem和AVPlayer的许多属性。不过KVO也有不能胜任的场景,比如需要监听AVPlayer的时间变化。这些监听类型都是自身具有明显的动态特性并需要非常高的精确度,这一点要比标准的键值监听要求高。为满足这一需求,AVPlayer提供了两种基于时间的监听方法,让应用程序可以对时间变化进行精准的监听。
……
前言/序言
AV Foundation开发秘籍:实践掌握iOS & OS X 应用的视听处理技术 下载 mobi epub pdf txt 电子书 格式
AV Foundation开发秘籍:实践掌握iOS & OS X 应用的视听处理技术 下载 mobi pdf epub txt 电子书 格式 2024
AV Foundation开发秘籍:实践掌握iOS & OS X 应用的视听处理技术 下载 mobi epub pdf 电子书
AV Foundation开发秘籍:实践掌握iOS & OS X 应用的视听处理技术 mobi epub pdf txt 电子书 格式下载 2024