具体描述
快速掌握使用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开发具有实时视频处理功能的媒体捕捉应用
◆
实现自定义视频播放器
◆
整合高级捕捉功能,如视频缩放、人脸检测、条码扫描和高帧率捕捉
◆
混合多音频轨道和自动音量控制
◆
创建高级的非线性、无损编辑应用
. ◆
添加高级视频编辑功能,如视频过渡和动画效果
作者简介
Bob McCune是iOS咨询和培训公司TapHarmonic(位于明尼苏达州明尼阿波利斯市)的所有者。他具有丰富的iPhone和iPad开发经验,对相关的技术挑战和机遇了如指掌。McCune目前帮助多个客户开发大型企业级iOS应用程序。他的2012 Infinite Skills 视频培训课程Learning iOS Programming已成为全球最优秀的iOS培训课程之一。他创立并领导着Minnesota CocoaHeads用户组。
目录信息
第Ⅰ部分 AV Foundation基础
第1章 AV Foundation入门 3
1.1 AV Foundation的含义 3
1.2 AV Foundation的适用范围 4
1.3 解析AV Foundation 5
1.3.1 音频播放和记录 5
1.3.2 媒体文件检查 6
1.3.3 视频播放 6
1.3.4 媒体捕捉 6
1.3.5 媒体编辑 6
1.3.6 媒体处理 6
1.4 了解数字媒体 6
1.4.1 数字媒体采样 7
1.4.2 音频采样介绍 7
1.5 数字媒体压缩 11
1.5.1 色彩二次抽样 11
1.5.2 编解码器压缩 13
1.5.3 视频编解码器 13
1.5.4 音频编解码器 15
1.6 容器格式 16
1.7 初识AV Foundation 16
1.8 小结 20
1.9 挑战 20
第2章 播放和录制音频 21
2.1 Mac和iOS的音频环境 21
2.2 理解音频会话 22
2.2.1 音频会话分类 22
2.2.2 配置音频会话 23
2.3 使用AVAudioPlayer播放音频 23
2.3.1 创建AVAudioPlayer 23
2.3.2 对播放进行控制 24
2.4 创建Audio Looper 25
2.5 配置音频会话 29
2.6 处理中断事件 30
2.7 对线路改变的响应 33
2.8 使用AVAudioRecorder录制音频 35
2.8.1 创建AVAudioRecorder 36
2.8.2 控制录音过程 37
2.9 创建Voice Memo应用程序 38
2.9.1 配置音频会话 38
2.9.2 实现录音功能 39
2.10 使用Audio Metering 44
2.11 小结 48
第3章 资源和元数据 49
3.1 理解资源的含义 49
3.2 创建资源 50
3.2.1 iOS Assets库 50
3.2.2 iOS iPod库 51
3.2.3 Mac iTunes库 52
3.3 异步载入 52
3.4 媒体元数据 54
3.5 使用元数据 58
3.5.1 查找元数据 59
3.5.2 使用AVMetadataItem 60
3.6 创建MetaManager应用程序 63
3.6.1 THMediaItem 63
3.6.2 THMetadata的实现 67
3.6.3 数据转换器 69
3.6.4 简单转换 70
3.6.5 转换Artwork 71
3.6.6 转换注释 72
3.6.7 转换音轨数据 73
3.6.8 转换唱片数据 75
3.6.9 转换风格数据 76
3.6.10 完成THMetadata 79
3.7 保存元数据 81
3.8 小结 82
3.9 挑战 83
第4章 视频播放 85
4.1 播放功能综述 85
4.1.1 AVPlayer 86
4.1.2 AVPlayerLayer 86
4.1.3 AVPlayerItem 88
4.2 播放秘籍 88
4.3 处理时间 90
4.4 创建视频播放器 91
4.4.1 创建视频视图 91
4.4.2 创建视频控制器 93
4.4.3 监听状态改变 96
4.5 时间监听 97
4.5.1 定期监听 98
4.5.2 边界时间监听 98
4.5.3 条目结束监听 99
4.5.4 播放栏委托回调 100
4.6 创建可视搓擦条 102
4.7 显示字幕 106
4.8 Airplay 110
4.9 小结 111
4.10 挑战 112
第5章 AV Kit用法 113
5.1 针对iOS平台的AV Kit框架 113
5.2 针对Mac OS X平台的AV Kit框架 115
5.3 迈出第一步 115
5.4 控件类型 119
5.4.1 内嵌类型 119
5.4.2 浮动类型 120
5.4.3 最小化类型 120
5.4.4 None类型 121
5.5 拓展学习 121
5.6 章的处理 124
5.7 启用修剪 129
5.8 导出 130
5.9 传统资源的兼容 132
5.10 小结 135
5.11 挑战 136
第Ⅱ部分 媒 体 捕 捉
第6章 捕捉媒体 139
6.1 捕捉功能综述 139
6.1.1 捕捉会话 140
6.1.2 捕捉设备 140
6.1.3 捕捉设备的输入 140
6.1.4 捕捉的输出 141
6.1.5 捕捉连接 141
6.1.6 捕捉预览 141
6.2 简单的秘籍 143
6.3 创建相机应用程序 144
6.3.1 创建预览视图 145
6.3.2 创建捕捉控制器 148
6.3.3 设置捕捉会话 149
6.3.4 启动和停止会话 151
6.3.5 处理隐私需求 152
6.3.6 切换摄像头 153
6.3.7 配置捕捉设备 155
6.3.8 调整焦距和曝光 156
6.3.9 调整闪光灯和手电筒模式 160
6.3.10 拍摄静态图片 161
6.3.11 使用Assets Library框架 163
6.3.12 视频捕捉 165
6.4 小结 170
6.5 挑战 170
第7章 高级捕捉功能 171
7.1 视频缩放 171
7.2 人脸检测 176
7.3 机器可读代码识别 186
7.3.1 一维条码 186
7.3.2 创建条码扫描器 188
7.3.3 创建条码识别的委托 191
7.4 使用高帧率捕捉 196
7.4.1 高帧率捕捉综述 197
7.4.2 支持高帧率捕捉 197
7.5 视频处理 201
7.6 学习CMSampleBuffer 202
7.6.1 样本数据 202
7.6.2 格式描述 203
7.6.3 时间信息 204
7.6.4 附加的元数据 204
7.6.5 AVCaptureVideoData- Output 205
7.7 小结 209
7.8 挑战 209
第8章 读取和写入媒体 211
8.1 综述 211
8.1.1 AVAssetReader 212
8.1.2 AVAssetWriter 212
8.1.3 读写示例 213
8.2 创建音频波形视图 215
8.2.1 读取音频样本 216
8.2.2 缩减音频样本 220
8.2.3 渲染音频样本 222
8.3 捕捉录制的高级方法 224
8.4 小结 237
8.5 挑战 238
第Ⅲ部分 媒体创建和编辑
第9章 媒体的组合和编辑 241
9.1 组合媒体 241
9.2 时间的处理 243
9.2.1 CMTime 243
9.2.2 CMTimeRange 245
9.3 基础方法 246
9.4 15 Seconds示例应用程序 249
9.5 创建一个组合 251
9.6 导出组合 256
9.7 小结 260
9.8 挑战 260
第10章 混合音频 261
10.1 混合音频 261
10.2 15 Seconds应用程序中的音频混合 264
10.3 小结 269
10.4 挑战 269
第11章 创建视频过渡效果 271
11.1 综述 271
11.1.1 AVVideoComposition 272
11.1.2 AVVideoComposition- Instruction 272
11.1.3 AVVideoCompositionLayer-Instruction 272
11.2 概念阶段 272
11.2.1 部署视频布局 273
11.2.2 定义重叠区域 274
11.2.3 计算通过和过渡的时间范围 276
11.2.4 创建组合和层指令 278
11.2.5 创建和配置AVVideo- Composition 279
11.2.6 创建视频组合的捷径 280
11.3 为15 Seconds应用程序添加视频过渡 281
11.4 小结 290
11.5 挑战 290
第12章 动画图层内容 291
12.1 Core Animation应用 291
12.2 在AV Foundation中使用Core Animation 293
12.2.1 使用AVSynchronizedLayer播放 294
12.2.2 使用AVVideoComposition-CoreAnimationTool导出 295
12.3 15 Seconds应用程序:添加动画标题 296
12.4 准备组合 304
12.4.1 播放时应用Core Animation 305
12.4.2 导出时应用Core Animation 306
12.5 小结 307
12.6 挑战 308
↑折 叠
· · · · · · (收起)
读后感
用户评价
说实话,我对市面上那些浅尝辄止的框架介绍感到非常厌倦,它们顶多就是API的字典翻译,缺乏那种“知其所以然”的深度。我期待的《AV Foundation开发秘籍》必须是一本硬核的技术圣经,它需要深入到Mach-O文件层面去解释,如果可能的话,最好能展示一些私有API的合理替代方案,或者至少解释为什么某些公开API的设计是那个样子的。我非常关注时间同步和时间轴管理,特别是对于需要精确对齐音频和视频流的专业应用场景,比如制作专业的非线性编辑工具。这本书应该提供一套完整的、可复用的时间码处理类库的源码解析,并详细说明如何在不同设备间保持时间戳的一致性。此外,我对HDR视频的捕获、处理和播放流程特别感兴趣,这块技术更新迭代快,标准的文档往往滞后。如果这本书能提供详尽的色彩空间转换矩阵和色彩管理策略(如P3到Rec.709的转换逻辑),那这本书的价值就无法估量了。我希望它能解决那些让你在深夜抓耳挠腮、翻遍Stack Overflow都找不到答案的疑难杂症,比如在特定iOS版本下特定的硬件编解码器限制等。
这本书如果真如我所愿,它就不仅仅是教我写代码,更是教我如何像苹果工程师一样思考问题。我想要看到大量关于性能调优的案例研究,比如如何利用Instruments工具链来诊断AVPlayer的卡顿(Stuttering)问题,如何通过优化CALayer的合成路径来减少GPU负载。我不希望看到任何通用的介绍,我需要的是具体的、基于真实世界复杂场景的优化策略,比如如何高效地实现画中画(PiP)模式,同时保持后台音频的连续性。另外,这本书对于安全性和DRM(数字版权管理)的讨论也必不可少。我期待它能详细解析FairPlay Streaming(FPS)的工作原理,如何在应用内安全地加载和解密受保护的内容,以及如何处理与服务器端的握手和证书验证过程。如果它还能包含一些关于空间音频(如Dolby Atmos或Ambisonics)的初步集成指南,那就太棒了,这代表了沉浸式体验的未来方向。这本书必须提供足够的深度,让一个经验丰富的工程师读完后,能立即着手构建下一代媒体应用。
我追求的是那种能把看似分离的模块完美串联起来的整合能力。AVFoundation的强大在于它能与Core Animation、Core Image、Core Media等多个底层框架协同工作。我希望看到的是一本真正打通这些“技术孤岛”的书。例如,如何使用Core Image的CIFilter流水线来处理实时捕获到的视频帧,然后立即将结果送入AVFoundation进行编码,这一切都要求对数据流的生命周期有极其深刻的理解。我特别关注自定义视频合成器(AVVideoComposition)的编写,如何处理复杂的遮罩、过渡效果和多层视频的深度混合。书中应该有一整章专门讨论线程模型:哪些操作必须在主线程进行,哪些可以安全地放到串行或并发队列中,以及如何避免常见的死锁和竞态条件。这本书如果能像一本高级算法教材一样,提供详尽的流程图和数据结构分析,解释帧缓冲区的流转和内存池的分配策略,那么它将不仅仅是一本“秘籍”,而是一份值得收藏的技术手册。我期待它能填补我知识体系中关于底层数据流控制的那块巨大空白。
天呐,这本书简直是为我量身定做的!作为一名热衷于在iOS平台上实现高级音视频处理的开发者,我一直在寻找一本能深入剖析AVFoundation框架,同时又提供大量实战技巧的权威指南。我期待这本书能彻底拆解底层的媒体处理流程,比如采集、编码、解码、以及如何在Metal或者OpenGL ES层面进行实时渲染和合成。我特别希望能看到关于AVCaptureSession的高级配置,如何精确控制曝光、对焦、白平衡,甚至是如何实现自定义的视频效果过滤器。更进一步,对于音频方面,我希望它能详尽讲解AVAudioEngine的内部机制,如何构建复杂的音频处理图,实现低延迟的混音、效果器加载,以及如何处理空间音频。这本书如果能涵盖SwiftUI下的媒体播放器构建,结合Combine进行响应式编程,那就更完美了。我设想的这本书,应该是一本能让我快速从“会用”到“精通”的武功秘籍,里面充满了独家优化的代码片段和解决棘手问题的“黑魔法”。我迫不及待想看看作者是如何优雅地处理那些常见的崩溃和性能瓶颈的,比如内存管理、后台任务处理和文件格式兼容性问题。这本书如果能像我期待的那样,将理论与前沿实践完美结合,那它绝对是我的年度必读之作。
我的关注点在于跨平台兼容性和未来趋势的预见性。现在很多应用都需要适配iPadOS的多任务窗口、macOS的Catalyst以及Vision Pro。我希望这本书能清晰地阐述AVFoundation在这些不同平台上的行为差异,并提供统一代码库的最佳实践。例如,在macOS上处理屏幕录制和窗口捕获时,如何与Core Graphics和Quartz Composer进行有效集成。对于新兴的媒体格式,比如ProRes或HEVC的10-bit/12-bit深度支持,这本书必须给出明确的指导方针,说明哪些设备可以硬件加速,哪些需要软件回退。此外,我更看重作者对于框架演进的洞察力。如果书中能包含一些关于下一代媒体引擎(如可能取代AVFoundation的某项技术)的预测,或者对现有API的“不推荐”部分的深入分析,解释为什么它们不再适用,那这本书就具有了极高的前瞻价值。它应该是一个活的文档,包含最新的WWDC会议中的关键更新,并提供即时的、经过验证的实现示例。
没想到18年开始书里demo的轨道式视频编辑交互方式开始要火了...
浏览了一遍,感觉像是读黑皮儿的《Linux网络编程》。也许AV Foundation比较繁杂,主要是在讲解API的用法。
非常棒的书,美中不足的是内容有点老了,没有用swift,没包含新版本的特性(新版本API也改了)。期待新版本!
过了一遍,了解了音视频相关框架基本结构和功能。还需要练习才能深入。
知识点很全面,有深入的概念和详细的代码