View in English

  • 打开菜单 关闭菜单
  • Apple Developer
搜索
关闭搜索
  • Apple Developer
  • 新闻
  • 探索
  • 设计
  • 开发
  • 分发
  • 支持
  • 账户
在“”范围内搜索。

快捷链接

5 快捷链接

视频

打开菜单 关闭菜单
  • 专题
  • 相关主题
  • 所有视频
  • 关于

返回 WWDC25

  • 简介
  • 概要
  • 转写文稿
  • 代码
  • 提升 App 的音频录制功能

    了解如何提升 App 的音频录制功能。探索如何通过 iOS 和 iPadOS 26 上的输入选择器交互来灵活地选择音频设备。了解有哪些 API 可帮助你通过 AirPods 进行高质量录音。我们还将介绍空间音频录制和编辑功能,这些功能可让你隔离语音和环境背景音,所有这些功能均可使用 AudioToolbox、AVFoundation 和 Cinematic 框架实现。

    章节

    • 0:00 - 简介
    • 1:02 - 选择输入通道
    • 3:06 - 使用 AirPods 录音
    • 5:11 - 空间音频采集
    • 11:04 - 混音

    资源

    • AVFoundation
    • Capturing Spatial Audio in your iOS app
    • Cinematic
    • Editing Spatial Audio with an audio mix
    • TN3177: Understanding alternate audio track groups in movie files
      • 高清视频
      • 标清视频

    相关视频

    WWDC25

    • 利用拍摄控件提升你的相机体验
    • 在你的 App 中录制电影效果视频
  • 搜索此视频…

    大家好! 我叫 Steve Nimick 是一名音频软件工程师 从事空间音频技术方面的工作 在这个视频中 我将介绍 如何增强 App 的音频功能 我将介绍一些 API 更新 面向 输入设备的选择、音频采集和播放

    采集音频的第一步 是选择输入设备 麦克风有许多不同类型 新的 API 允许在 App 中 更改要采集的音频源 其他增强功能可让你的 App 在新的高音质录音模式下 使用 AirPods 其他更新包括空间音频采集 以及一些新功能 为 App 的音频处理 提供了更多可能性 最后 新的 API 可为 空间音频播放解锁混音功能 我先来介绍输入通道的选择 我们更新了 App 与 连接设备的交互方式 在不同场景下 内容创作者 可能会用到多个音频设备 例如录制音乐或播客 iOS 26 改进了系统 管理音频设备的方式 这些改进也适用于 App! AVKit 中的新 API 会显示 现有输入的列表 并允许在 App 内部切换音频源 而不必导航到系统设置 这里是这个 UI 的示例 你的 App 会有一个 UI 按钮 用于调出新的输入选择菜单 它会显示设备列表和实时音量 还有一个麦克风模式选择视图 用于显示输入设备支持的模式 音频堆栈会记住所选设备 并在 App 下次启动时 选取相同的输入 这就是为 App 启用 这项功能的 API

    首先 在调用这个 API 之前 需要配置音频会话 这可确保输入选择视图 显示正确的设备列表 要显示输入选择器 就要创建 AVInputPickerInteraction 的实例 请在设置音频会话后 再进行这步操作 然后 将 InputPickerInteraction 的代理 分配为呈现视图控制器 你的 App 可以指定 一个 UI 元素 比如按钮 用于调出选择器交互视图 最后在 UI 回调函数中 使用“present”方法 显示音频输入菜单 现在 轻点按钮后 就会显示选择器交互视图 让用户选择并更改设备 这个 API 让用户可以 轻松、直观地在 App 打开的状态下更改输入 对于内容创作者来说 最易用的麦克风 就是最好的麦克风 现在 我将介绍一种很流行 又便捷的输入设备:AirPods iOS 26 新增了一种高音质、 高采样率的蓝牙选项 适用于 具有音频采集功能的 App 它采用专为内容创作者 设计的全新媒体调音 在人声和背景音之间 取得了很好的平衡 可达到领夹式麦克风的表现水平 启动这个调音模式后 App 会使用 一种更可靠的蓝牙连接 这种连接专为 AirPods 高音质录音而设计 我们来演示一下 App 如何配置这项功能 AVAudioSession 和 AVCaptureSession 都支持这种连接 AudioSession 新增了一个类别选项: bluetoothHighQualityRecording 如果你的 App 已在使用 AllowBluetoothHFP 选项 那么添加高音质选项后 App 就会默认选用高音质选项 BluetoothHFP 是一种后备保障 以防输入通道 不支持蓝牙高音质 AVCaptureSession 有一个 类似的属性 当它设置为 true 时 就会启用这种高音质模式 不必为 App 手动设置音频会话 对于这两种会话 如果启用了这个选项 系统级音频输入菜单就会 在设备列表中加入高音质 AirPods 这项 AirPods 功能对于能录制 音频的 App 是一种绝佳补充 并且只需对代码 做极少更改即可实现 除了高音质的录音外 AirPods 自带的一些 控制功能也有助于轻松录音 用户轻按 AirPods 的耳机柄 即可开始和停止 如需进一步了解如何 在 App 中支持这项功能 请观看 WWDC25 讲座“利用 拍摄控件提升你的相机体验” 下面我将介绍空间音频 录制的最新更新 在 iOS 26 中 使用 AVAssetWriter 的 App 能够录制空间音频 首先一定要弄清楚 “空间音频”的工作原理 空间音频录制使用一系列麦克风 比如 iPhone 上的麦克风 来录制 3D 场景的音频 然后 麦克风采集的声音 会转换为基于球谐函数的格式 称为 Ambisonics 空间音频会存储为 一阶 Ambisonics 缩写为 FOA FOA 前四个球谐函数成分 包括一个全向成分 以及三个垂直偶极成分 分别在 X、Y 和 Z 方向 即前后、左右和上下 以这种格式录制的音频享有优势 可以利用空间音频播放功能 比如 AirPods 的头部追踪 此外 你的 App 还可以使用 新的 API 来实现混音效果 这种效果使用户可以轻松调整 前景和背景声音的平衡 空间音频采集的 API 是在 iOS 18 中推出的 使用 AVCaptureMovieFileOutput 的 App 可以录制空间音频 方法是将 AVCaptureDeviceInput 的 multichannelAudioMode 属性 设为 .firstOrderAmbisonics 在 iOS 26 中 语音备忘录之类纯音频 App 现在可以选择以 QuickTime 音频格式保存数据 扩展名为 .qta 与 QuickTime 影片或 MPEG 文件类似 QTA 格式支持 多条音轨和备用音轨组 就像空间音频 文件的组成方式一样 这里大概展示一下 格式正确的空间音频素材 有两条音轨:一条是 AAC 格式的 立体声音轨 另一条是采用 新 Apple Positional Audio Codec (APAC) 格式的空间音频轨道 在 ProRes 录制中 这些音轨会编码为 PCM 其中的立体声音轨是为了兼容性 以防某些设备不支持空间音频 最后还有至少一条元数据轨道 其中包含播放信息 录音停止后会创建一个数据样本 表明可以使用混音效果 它还包含播放期间 应用的调音参数 我将在下一段的混音部分中 详细讨论这个话题 如果你想深入了解如何创建 音轨组和兼容性后备保障 请阅读技术说明 “了解电影文件中的备用音轨组” 如果 App 使用 AVAssetWriter 而非 MovieFileOutput 来汇编文件 我将介绍创建空间音频录音 所需的元素 必须要有两条音轨 和一条元数据轨道 如果 CaptureDeviceInput 的 multichannelAudioMode 属性设为 FOA 则 AVCaptureSession 可以支持最多 两个 AudioDataOutput (ADO) 实例 一个 ADO 可以生成四条 FOA 通道或两条立体声通道 空间音频包含两条音轨 需要两个 ADO 其中一个必须配置为 FOA 另一个必须输出立体声 ADO 对象上有一个新的 通道布局标签属性: spatialAudioChannelLayoutTag 这个布局标签有两个可能的值: 立体声或一阶 Ambisonics 即四条 Ambisonics 布局 HOA_ACN_SN3D 的通道 你的 App 需要 2 个 AssetWriterInput 来制作音轨 一个用于立体声 一个用于 FOA 最后一部分是元数据 有新的 API 来创建这个样本 使用辅助对象: AVCaptureSpatialAudioMetadataSampleGenerator 样本生成器对象接收 来自 FOA AudioDataOutput 的相同的缓冲区 录音停止时 在发送最后一个缓冲区后 样本生成器会创建一个 定时元数据样本 并传递给另一个 AssetWriterInput 然后作为元数据轨道 编译合成到最终文件中 AVCaptureSession 还有一项更新 会影响 MovieFileOutput 和 AudioDataOutput 并且对于会用到这两个 对象的 App 来说非常有用 AudioDataOutput 可让你访问 接收到的音频样本缓冲区 这样你的 App 就可以在屏幕上 应用效果或绘制波形 在 iOS 26 中 CaptureSession 支持 同时执行 MovieFileOutput 和 AudioDataOutput 这意味着你的 App 可以录制到文件 然后实时处理或可视化音频样本 这一更新让你可以更自由地 为 App 添加一些花样 给用户带去惊喜 有关使用 AVAssetWriter 录制空间音频的示例 请观看新的 “在 iOS App 中录制空间音频” 这个视频提供了示例 App 的链接 在 iOS 26 中 你还可以录制 具有电影效果的视频 并在其中加入空间音频 如需详细了解 请观看 WWDC25“在 你的 App 中录制电影效果视频” 在下一段中 我将讨论 空间音频的另一个元素: 使用混音功能进行播放和编辑 iOS 和 macOS 26 新增了一项功能 即 Cinematic 框架 它可以控制混音效果 这与“照片”的编辑功能相同 适用于带有空间音频的录制视频 通过混音功能 你可以调整 讲话等前景声音 和背景环境噪音之间的平衡 新 API 包含几种混合模式 与“照片”App 所用的一样 分别是 Cinematic、Studio 和 In-Frame 此外还有六种额外的模式 可用于 App 这些其他模式能够单独提取语音 以单声道形式呈现 也可以单独提取前景音或 环境背景音以 FOA 格式呈现 对能播放空间音频内容的 App 来说 这是一项强大的补充功能 我们这就来演示一下 这个演示旨在展示如何 控制空间音频录音的混音效果 我现在在 Apple Park 园区 这里环境优美 很适合拍视频 但是手机麦克风 录下了我周围所有的声音 如果不经处理会显得太过嘈杂 不符合我的要求 Steve 在他的 App 中 添加了一个 UI 元素 可以切换各种音频混音风格: 标准、电影效果、录音室 和几种背景音模式 选择“电影效果”将应用 电影效果混音风格 这样听起来好多了 还有一个滑块 用于调整语音和环境噪音之间的平衡 我要调到一个位置 让我的声音响亮清晰 现在这个位置就很好

    如果选择背景模式 我的声音就听不到了 音轨中将仅有环境声音 这种模式可用于创建 纯环境音的音轨 方便后期制作 我现在要选择这个模式

    现在回到语音模式 接下来 Steve 将向你演示 如何将这个功能添加到 App 中

    下面我们来讲如何实现这个功能 首先导入 Cinematic 框架 两个主要的混音参数是: effectIntensity 和 renderingStyle 演示 App 使用了 UI 元素 来实时更改这两个参数 intensity 强度范围 是 0 到 1 CNSpatialAudioRenderingStyle 是枚举 包含各个风格选项 接下来初始化一个 CNAssetSpatialAudioInfo 的实例 这个类包含许多 用于处理混音的属性和方法 例如下一行中运行的 audioInfo.audioMix() 这会使用当前的混音参数 创建 AVAudioMix 然后将这个新的混音设置到 AVPlayerItem 的混音属性上 这样你就能在 AVPlayer App 中 使用混音功能了

    在 AVPlayer 之外 你可以运行混音处理 使用名为 AUAudioMix 的 新 AudioUnit 这个 AU 能分离语音和环境音 AVPlayer 能自动配置许多设置 而对于不使用 AVPlayer 的 App 直接使用这个 AU 非常有用 如果你的 App 需要更细致的 自定工作流程 AUAudioMix 可提供更大的灵活性 和更多调音选项 这里展示一下 AU 内部的不同组件 输入是四通道的 FOA 空间音频 它流入处理块 处理块将语音和环境音分离 输出结果被发送到 AUSpatialMixer 中 AUSpatialMixer 会提供其他播放选项 前两个 AU 参数是 RemixAmount 和 Style 这是混音的两个基本元素 此外还有 AUAudioMix 属性: EnableSpatialization 这个属性可打开或关闭 SpatialMixer 这将更改整个 AU 的输出格式 这一点我稍后会详细介绍 AudioUnit 属性 SpatialMixerOutputType 可以将输出渲染到耳机、 设备的内置扬声器或外部扬声器 AU 还有一个属性 用于输入和输出流的格式 由于这里 AU 接收的是 FOA 音频 因此输入流设置为四通道 还有一个属性称为 SpatialAudioMixMetadata 这是一个 CFData 对象 其中包含自动生成的调音参数 用于人声和环境音组成部分 我们来讲一下它如何运作 空间音频录制停止后 录音过程会立即 分析前景音和背景音 计算在播放期间应用的音频参数 例如增益和 EQ 这些值保存在元数据轨道中 配置 AUAudioMix 时 App 需要 从输入文件中读取这些数据 并将这些调音参数应用于 AU 下面是如何从文件中 提取这些元数据的示例 同样 开始还是一个 CNAssetSpatialAudioInfo 实例 检索 MixMetadata 属性 方法是调用 audioInfo.spacialAudioMixMetadata 这需要是 CFData 类型 才能在 AU 上设置这个属性

    前面我提到了 EnableSpatialization 属性 默认情况下它是关闭的 而在这个模式下 AU 输出了五条通道 这是声音分离的结果 也就是说 有四条通道是 FOA 格式 的环境音 外加一条通道是人声 打开 spatialization 属性后 AU 会支持其他常见的通道布局 例如 5.1 环绕声或 7.1.4 最后 本视频提供了一个 命令行工具示例项目的链接 名为“使用混音编辑空间音频” SpatialAudioCLI 提供了示例 展示如何以三种不同方式应用混音 “preview”模式使用“AVPlayer” 来播放输入 并应用混音参数 “bake”选项使用 AVAssetWriter 保存一个带有混音参数的新文件 包括一条立体声兼容性音轨 “process”模式通过 “AUAudioMix”发送输入 并将输出渲染到指定的通道布局 现在你已经了解了 所有新的音频功能 下面来看看如何将你的 App 提升到新的水平

    添加 AVInputPickerInteraction 让用户不必切出 App 就能在内部选择音频输入 为 AirPods 启用 蓝牙高音质录音选项 让内容创作者可以快速轻松地 以高音质录音 用 MovieFileOutput 和 AudioDataOutput 来录制和应用音效 从而为 App 提供更大的灵活性 要更好地控制 请在空间音频 录制中使用 AVAssetWriter 并在播放期间使用新的 Audio Mix API 要开始使用空间音频 请下载相关的示例代码项目

    不知用户会用你的 App 创作出多少精彩的内容! 我倍感期待! 祝大家今天顺利愉快!

    • 2:10 - Input route selection

      import AVKit
      
      class AppViewController {
      
          // Configure AudioSession
      
          // AVInputPickerInteraction is a NSObject subclass that presents an input picker
          let inputPickerInteraction = AVInputPickerInteraction()   
          inputPickerInteraction.delegate = self
      
          // connect the PickerInteraction to a UI element for displaying the picker
          @IBOutlet weak var selectMicButton: UIButton!
          self.selectMicButton.addInteraction(self.inputPickerInteraction)
      
          // button press callback: present input picker UI
          @IBAction func handleSelectMicButton(_ sender: UIButton) {
      	    inputPickerInteraction.present()
          }
      }
    • 3:57 - AirPods high quality recording

      // AVAudioSession clients opt-in - session category option
      AVAudioSessionCategoryOptions.bluetoothHighQualityRecording
      
      // AVCaptureSession clients opt-in - captureSession property
      session.configuresApplicationAudioSessionForBluetoothHighQualityRecording = true
    • 13:26 - Audio Mix with AVPlayer

      import Cinematic
      
      // Audio Mix parameters (consider using UI elements to change these values)
      var intensity: Float32 = 0.5 // values between 0.0 and 1.0
      var style = CNSpatialAudioRenderingStyle.cinematic
      
      // Initializes an instance of CNAssetAudioInfo for an AVAsset asynchronously
      let audioInfo = try await CNAssetSpatialAudioInfo(asset: myAVAsset)
          
      // Returns an AVAudioMix with effect intensity and rendering style.
      let newAudioMix: AVAudioMix = audioInfo.audioMix(effectIntensity: intensity,
                                                       renderingStyle: style)
      
      // Set the new AVAudioMix on your AVPlayerItem
      myAVPlayerItem.audioMix = newAudioMix
    • 16:45 - Get remix metadata from input file

      // Get Spatial Audio remix metadata from input AVAsset
      
      let audioInfo = try await CNAssetSpatialAudioInfo(asset: myAVAsset)
      
      // extract the remix metadata. Set on AUAudioMix with AudioUnitSetProperty()
      let remixMetadata = audioInfo.spatialAudioMixMetadata as CFData
    • 0:00 - 简介
    • iOS 26 推出了多项 API 更新,增强了 App 音频录制功能,包括输入设备选择、AirPods 高音质录音、空间音频采集、音频处理,以及空间音频播放时的混音功能。

    • 1:02 - 选择输入通道
    • AVKit 新增了一个名为“AVInputPickerInteraction”的 API,可帮助内容创作者在使用多台设备时更高效地管理音频输入。借助“AVInputPickerInteraction”,App 可以显示实时输入选择菜单,支持音量电平监测与麦克风模式选择,让用户无需前往“系统设置”,即可在 App 内直接切换音频源。音频堆栈会记住用户选择的设备,方便后续使用。

    • 3:06 - 使用 AirPods 录音
    • 从 iOS 26 开始,AirPods 引入全新媒体调音模式,可达到领夹式麦克风的音质表现,让你可将 AirPods 用作高音质录音工具。App 可通过“AVAudioSession”或“AVCaptureSession”轻松启用这一高音质蓝牙录音功能,提供可靠便捷的高音质录音方案,并内置耳机柄控制功能,便于开始和停止录制。

    • 5:11 - 空间音频采集
    • iOS 26 还对空间音频录制功能进行了多项更新。 现在,使用“AVAssetWriter”的 App 能够借助空间音频采集功能,以一阶 Ambisonics (FOA) 格式进行录。FOA 使用四个球谐函数成分来捕捉 3D 音频场景,借助诸如 AirPods 头部追踪等功能实现沉浸式的空间音频播放。 全新 API 支持使用混音效果来调节前景与背景声音的平衡,并支持以 QuickTime 音频格式 (.qta) 来存储纯音频数据。 格式正确的空间音频素材包含两条音轨:一条是用于实现兼容性的 AAC 格式立体声音轨,另一条是采用全新 Apple Positional 音频编解码器 (APAC) 格式的空间音频轨道。此外,还至少有一条元数据轨道,其中包含必要的播放信息。 iOS 26 还支持“MovieFileOutput”与“AudioDataOutput”同时运行,从而在向文件录制内容时实现音频的实时处理与可视化。

    • 11:04 - 混音
    • 在 iOS 和 macOS 26 中,Cinematic 框架为空间音频视频引入了全新的混音控制功能。这一功能类似于“照片”App 的编辑工具,可用于调整前景音 (如人声) 与背景环境音之间的音量平衡。 这个框架提供多种混音模式,包括 Cinematic、Studio 和 In-Frame 模式,另有六种模式可分别提取语音或环境音。你可以通过 UI 元素实现这些控制,以便实时调整音效强度与渲染样式。 名为 AUAudioMix 的全新 AudioUnit 可为不使用 AVPlayer 的 App 提供更具针对性和自定的音频处理工作流。它能够将语音与环境音分离,并支持将音频渲染至不同的输出设备,例如耳机、扬声器或环绕声系统。这个框架还包含“SpatialAudioMixMetadata”,可在播放过程中自动调节人声与环境音的比例。 Apple 还提供了一个新的命令行工具示例项目 SpatialAudioCLI,用于空间音频处理。下载这个项目即可开始体验空间音频功能。

Developer Footer

  • 视频
  • WWDC25
  • 提升 App 的音频录制功能
  • 打开菜单 关闭菜单
    • iOS
    • iPadOS
    • macOS
    • Apple tvOS
    • visionOS
    • watchOS
    打开菜单 关闭菜单
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    打开菜单 关闭菜单
    • 辅助功能
    • 配件
    • App 扩展
    • App Store
    • 音频与视频 (英文)
    • 增强现实
    • 设计
    • 分发
    • 教育
    • 字体 (英文)
    • 游戏
    • 健康与健身
    • App 内购买项目
    • 本地化
    • 地图与位置
    • 机器学习
    • 开源资源 (英文)
    • 安全性
    • Safari 浏览器与网页 (英文)
    打开菜单 关闭菜单
    • 完整文档 (英文)
    • 部分主题文档 (简体中文)
    • 教程
    • 下载 (英文)
    • 论坛 (英文)
    • 视频
    打开菜单 关闭菜单
    • 支持文档
    • 联系我们
    • 错误报告
    • 系统状态 (英文)
    打开菜单 关闭菜单
    • Apple 开发者
    • App Store Connect
    • 证书、标识符和描述文件 (英文)
    • 反馈助理
    打开菜单 关闭菜单
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program (英文)
    • News Partner Program (英文)
    • Video Partner Program (英文)
    • 安全赏金计划 (英文)
    • Security Research Device Program (英文)
    打开菜单 关闭菜单
    • 与 Apple 会面交流
    • Apple Developer Center
    • App Store 大奖 (英文)
    • Apple 设计大奖
    • Apple Developer Academies (英文)
    • WWDC
    获取 Apple Developer App。
    版权所有 © 2025 Apple Inc. 保留所有权利。
    使用条款 隐私政策 协议和准则