View in English

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

快捷链接

5 快捷链接

视频

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

更多视频

  • 简介
  • 概要
  • 转写文稿
  • 代码
  • 使用基于机器学习的视频效果增强你的 App

    了解如何添加帧率转换、超高分辨率和噪声过滤等效果来改善视频编辑与直播体验。我们将探索 Video Toolbox 框架中专为 Apple 芯片优化的基于 ML 的视频处理算法。了解如何将这些效果整合起来,以增强 App 在真实用例中的功能。

    章节

    • 0:00 - 简介
    • 1:04 - 视频效果概览
    • 4:55 - 将效果添加到你的 App
    • 6:46 - 示例应用:帧率转换
    • 11:16 - 示例应用:运动模糊效果
    • 13:46 - 示例应用:低延迟超高分辨率效果
    • 14:55 - 示例应用:低延迟帧插值

    资源

    • Enhancing your app with machine learning-based video effects
    • Frame processing
    • Video Toolbox
      • 高清视频
      • 标清视频
  • 搜索此视频…

    你好 我叫 Makhlouf 是视频处理团队的工程师 Video Toolbox 是视频应用程序中 使用最广泛的框架之一 它拥有丰富的功能集 可满足多种视频处理需求 从 macOS 15.4 系统开始 Video Toolbox 新增了 VTFrameProcessor API 这是一套专为 Apple 芯片优化的 基于机器学习的新型视频处理算法 很高兴告诉大家 现在 iOS 26 系统也支持这个 API 了 本期视频我将首先展示 VTFrameProcessor API 当前支持的特效功能 接着讲解将特效集成到 App 中的基本步骤 最后 通过典型用例 为大家演示具体实现方法 VTFrameProcessor API 提供了 多种特效 可满足不同场景需求 其中帧率转换、超分辨率 和动态模糊特效 专为高质量视频编辑而设计 而低延迟帧插值与超分辨率特效 则适用于需要实时处理的应用程序 时域降噪滤镜在这两种场景下 都能发挥作用 下面我将为大家展示 这些特效的实际效果 帧率转换功能 可调整视频片段的每秒帧数 以匹配目标 FPS 还能用于创建慢动作效果 左侧是足球运动员庆祝进球的视频 右侧则是应用了慢动作特效的 同一段视频 通过放慢动作节奏 视频不仅捕捉到 庆祝时的激烈氛围 还突显了球员们的激动情绪 超分辨率缩放器则能 提高视频分辨率 并修复老旧视频中的细节 特别适用于照片增强 和媒体修复等应用场景 在这个示例中 应用超分辨率效果 显著提升了视频的锐度和清晰度 使得右侧画面的船只呈现出 更丰富的细节 模糊感明显降低 超分辨率功能提供两种机器学习模型 分别针对图像和视频优化 动态模糊作为电影制作中的常用特效 不仅能营造观众预期的自然运动效果 还可用于创建多样化视觉效果 在本例中 右侧视频应用了动态模糊特效 使得骑行者的运动速度 在视觉上明显加快 此外还柔化了 左侧视频中生硬的运动画面 让观感更加流畅舒适 另一个非常实用的特效是时域降噪 它基于运动估计算法 通过分析前后参考帧来消除噪点 它不仅能有效抑制视频中的 时域噪波、去除画面瑕疵 还能优化压缩效率并提升画质 左侧视频中的树木存在明显色噪 而右侧应用效果后画面变得纯净许多 尤其是交通标志牌处的 噪点消除效果尤为显著 低延迟帧插值特效 能在实时处理中提升视频帧率 同时可选支持分辨率增强功能 左侧视频中女子边走边面对镜头说话 的画面原本帧率不足、卡顿明显 而经过处理的右侧视频 则流畅自然 观感显著改善 低延迟超分辨率作为 轻量级画质增强方案 专为优化视频会议体验打造 即使在网络状况不佳时 也能抑制编码伪影 锐化边缘细节 实时输出增强后的视频帧 为了演示这种效果 左侧画面是 一位男士讲话的低分辨率劣质视频 而经过处理的右侧视频则分辨率更高 压缩伪影减少、边缘更锐利、 面部细节更丰富 接下来我将介绍应用程序 如何集成这些特效 我会解释应用程序与框架间的 数据交换机制 并概述视频片段处理的主要步骤 要调用 VTFrameProcessor API 应用程序需先导入 VideoToolbox 框架 之后 处理视频片段主要有两个步骤 第一步是选择特效 在这个阶段 应用程序通过配置参数 来启动处理会话 这些参数将定义 整个会话期间特效的使用方式 会话创建成功后 应用程序将获得一个准备就绪的 VTFrameProcessor 对象 VTFrameProcessor 是基于帧的 API 这意味着应用程序需要逐帧发送 带有参数的输入视频帧 处理完成后 框架将返回输出帧 VTFrameProcessor API 具有广泛的应用场景 我将通过一些具体案例解析实现方法 在开始前需要说明 本次演示 附带了完整可运行的参考代码 其中测试视频素材 可供实时验证特效效果 接下来我将重点解析两个典型用例 视频编辑与实时画质增强 帧率转换、超分辨率、动态模糊 和时域降噪等特效 都非常适合视频编辑场景 这类应用程序通常以画质为第一考量 我先来讲一下帧率转换技术 它通过合成新帧 并插入现有帧之间 来增加视频帧数 主要应用于这些场景 提升播放流畅度 特别是解决源帧率与显示设备 不匹配导致的卡顿问题 它不仅能填补丢帧造成的画面断层 还能用于生成慢动作特效 这种手法在电影制作中 经常用于延展动作场景的持续时间 使动作场景更具视觉冲击力 在体育赛事中 慢动作特效常用于 突出并分析比赛关键时刻 左侧视频是一位男士在练习舞蹈动作 右侧则是施加慢动作处理后的效果 这种特效处理能让观众更充分地 欣赏舞蹈动作的细节复杂度 使表演更具观赏吸引力 现在我将演示如何通过 VTFrameProcessor API 实现帧率转换功能 首先需要创建特效处理会话 为此 我将创建一个 VTFrameProcessor 对象 接着创建配置对象 对于帧率转换 需使用 VTFrameRateConversionConfiguration 类型 初始化配置时需要提供若干参数设置 包括输入帧的宽度和高度、 是否已预计算光流、 质量等级以及算法版本等 此时我可以调用启动会话方法 来初始化帧处理引擎 第二步是使用参数对象来处理帧 这里需要使用 VTFrameRateConversionParameters 类型的对象 但在使用参数类之前 需要先分配所有必要的缓冲区 通常来说 所有输入和输出帧缓冲区 都由调用方负责分配 可以通过配置类中的 源像素和目标像素缓冲区属性 来建立 CVPixelBuffer 内存池 首先 我会创建 当前源帧和下一帧对象 接着创建 interpolationPhase 数组 用于指定插入插值帧的位置 这个数组的大小决定了 需要插值的帧数 最后创建目标数组 来接收输出帧缓冲区 目标数组的大小与 interpolationPhase 数组相同 完成缓冲区准备后 便可设置剩余参数 我将光流参数设为 nil 让处理器自行计算光流 并通过提交模式参数 指定帧是按顺序提交 还是随机提交 创建 VTFrameRateConversionParameters 后 即可调用过程函数进行实际处理 总的来说 每个特效都由 由两种类定义: VTFrameProcessorConfiguration 类 用于配置特效处理会话的参数 VTFrameProcessorParameters 类 则负责定义输入/输出帧 及所有相关参数 开发 App 时需重点考虑 是否预计算光流 由于光流计算可能消耗较大资源 部分 App 会选择提前计算 以提升最终渲染性能 要预先计算光流 应使用 VTOpticalFlowConfiguration 和 VTOpticalFlowParameters 类进行配置 当配置中将 usePrecomputedFlow 参数设为 false 时 框架将实时动态计算光流

    接下来我将介绍 另一个重要的视频编辑功能 动态模糊 这个功能通过模拟慢快门速度 为运动中的物体创建模糊效果 可以通过 API 调整模糊强度参数 来控制虚化效果程度 它可用于许多场景 例如使运动画面呈现自然观感 或满足艺术创作需求 例如为高速移动物体增强速度感 左侧是高速公路延时摄影视频 右侧应用动态模糊后 视频呈现更流畅的视觉效果 对延时视频施加动态模糊 能有效还原自然运动轨迹 使画面看起来更逼真 避免画面变成静态图像的机械堆砌 要创建动态模糊处理会话 请使用 VTMotionBlurConfiguration 类进行配置 你可参考帧率转换示例 因为它们的配置参数相似 接下来我将演示如何初始化 VTMotionBlurParameters 对象 来处理帧 动态模糊需要两个参考帧: 前一帧和后一帧 对于片段中的第一帧 应将前一帧设为 nil 对于片段中的末帧 应将后一帧设为 nil 现在我已获取帧缓冲数据 可以创建 VTMotionBlurParameters 了 我通过将 flow 参数设为 nil 让处理器自动计算光流 然后选择模糊强度 取值范围从 1 到 100 创建运动模糊参数后 调用 process 函数 启动实际处理流程 接下来我将介绍几个 专为视频会议、直播等 实时场景设计的功能 时域降噪、低延迟帧插值 和超分辨率等特效均 专为实时场景设计 在提升画质的同时严格保障性能表现 其中低延迟特效 通常由接收端设备完成处理 接下来我将具体介绍几个特效 先来谈谈低延迟超分辨率 要实现这种特效 需使用 LowLatencySuperResolutionScalerConfiguration 及参数类 两者操作都非常直观 配置类仅需设置帧宽度、高度 及缩放比例 参数类只需传入源帧与目标帧缓冲区 本示例展示了低延迟超分辨率技术 如何显著提升视频会议画质 左侧视频是一位 正在进行视频通话的蓄须男子 他的说话、微笑和手势动作 因分辨率不足而显得模糊 应用超分辨率效果后 如右侧视频所示 男子的面部细节变得十分明显 特别是胡须部分的纹理细节 低延迟帧插值技术同样是为了 提升实时视频会议体验 尤其适用于网络连接不畅时 的视频通话场景 要应用这个特效 需选用对应版本的 LowLatencyFrameInterpolationConfiguration 及参数类进行设置 此前我们已经演示过 低延迟帧插值技术 如何有效消除视频卡顿 提供更流畅的播放体验 这个 API 还提供了一项实用功能 将帧率倍增 与分辨率提升两大功能 整合为单一滤镜

    经过处理后 视频中女子的面部特征 和背景细节更加清晰锐利 同时画面流畅度也显著提升 Video Toolbox 框架本身 已具备丰富的功能 包括硬件视频 编解码器直接调用 视频压缩与解压缩服务 以及像素格式转换等 添加 VTFrameProcessor API 后 开发者现在能够打造 更具吸引力的应用程序 在了解 VTFrameProcessor API 的 核心功能后 是时候将这些特效集成到 你的 App 中了 通过慢动作或动态模糊等新特效 提升剪辑表现力 利用低延迟超分辨率与帧插值技术 改善实时流媒体画质 这些只是 VTFrameProcessor API 应用场景的部分示例 感谢观看本视频 期待看到你创作的精彩视频

    • 8:06 - Frame rate conversion configuration

      // Frame rate conversion configuration
      
      
      let processor = VTFrameProcessor()
      
      guard let configuration = VTFrameRateConversionConfiguration(frameWidth: width,
                                                                  frameHeight: height,
                                                           usePrecomputedFlow: false,
                                                        qualityPrioritization: .normal,
                                                                     revision: .revision1)
      else {
           throw Fault.failedToCreateFRCConfiguration
      }
      
      try processor.startSession(configuration: configuration)
    • 8:56 - Frame rate conversion buffer allocation

      // Frame rate conversion buffer allocation
      
      //use sourcePixelBufferAttributes and destinationPixelBufferAttributes property of VTFrameRateConversionConfiguration to create source and destination CVPixelBuffer pools
      
      sourceFrame = VTFrameProcessorFrame(buffer: curPixelBuffer, presentationTimeStamp: sourcePTS)
      nextFrame = VTFrameProcessorFrame(buffer: nextPixelBuffer, presentationTimeStamp: nextPTS)
      
      // Interpolate 3 frames between reference frames for 4x slow-mo
      var interpolationPhase: [Float] = [0.25, 0.5, 0.75]
      
      //create destinationFrames
      let destinationFrames = try framesBetween(firstPTS: sourcePTS,
                                                 lastPTS: nextPTS,
                                  interpolationIntervals: intervals)
    • 9:48 - Frame rate conversion parameters

      // Frame rate conversion parameters
      
      guard let parameters = VTFrameRateConversionParameters(sourceFrame: sourceFrame,
                                                               nextFrame: nextFrame,
                                                             opticalFlow: nil,
                                                      interpolationPhase: interpolationPhase,
                                                          submissionMode: .sequential,
                                                       destinationFrames: destinationFrames)
      else {
           throw Fault.failedToCreateFRCParameters
      }
      
      try await processor.process(parameters: parameters)
    • 12:35 - Motion blur process parameters

      // Motion blur process parameters
      
      sourceFrame = VTFrameProcessorFrame(buffer: curPixelBuffer, presentationTimeStamp: sourcePTS)
      nextFrame = VTFrameProcessorFrame(buffer: nextPixelBuffer, presentationTimeStamp: nextPTS)
      previousFrame = VTFrameProcessorFrame(buffer: prevPixelBuffer, presentationTimeStamp: prevPTS)
      destinationFrame = VTFrameProcessorFrame(buffer: destPixelBuffer, presentationTimeStamp: sourcePTS)
      
      guard let parameters = VTMotionBlurParameters(sourceFrame: currentFrame,
                                                      nextFrame: nextFrame,
                                                  previousFrame: previousFrame,
                                                nextOpticalFlow: nil,
                                            previousOpticalFlow: nil,
                                             motionBlurStrength: strength,
                                                 submissionMode: .sequential,
                                               destinationFrame: destinationFrame) 
      else {
          throw Fault.failedToCreateMotionBlurParameters
      }
      
      try await processor.process(parameters: parameters)
    • 0:00 - 简介
    • Video Toolbox 是一个广泛使用的视频应用程序框架,通过“VTFrameProcessor”API 得到了增强。这个 API 是一套基于 ML 的全新视频处理算法,并针对 Apple 芯片进行了优化。这个 API 首次在 macOS 15.4 中推出,现已在 iOS 26 中提供。这个视频演示了一些主要用例中可以实现的效果、App 集成步骤和实现示例。

    • 1:04 - 视频效果概览
    • “VTFrameProcessor”API 提供视频编辑效果,包括用于创建慢动作的帧速率转换、用于增强低分辨率视频的超分辨率、用于营造自然运动效果的动态模糊、用于平滑处理的时域降噪,以及用于视频会议等实时应用程序的低延迟插值和超分辨率,从而提高各种视频场景下的画质和清晰度。

    • 4:55 - 将效果添加到你的 App
    • 这个 API 通过 Video Toolbox 框架访问,使应用程序能够通过两步来处理视频片段:选择效果并发送输入帧进行处理;然后框架返回输出帧。这个 API 适用于视频编辑和实时画质增强,具有帧速率转换、超分辨率、动态模糊和时域降噪等功能。这个演示附带参考示例代码。

    • 6:46 - 示例应用:帧率转换
    • 帧速率转换是一种视频处理技术,它通过合成新帧来增加片段中的帧数。这项功能可提高播放流畅度、消除卡顿,并可实现电影制作和体育赛事中常用的慢动作效果,以增强视觉冲击力和改善分析结果。 实现过程涉及在两个主要步骤中使用“VTFrameProcessor”API。第一步是使用配置对象创建会话,这个对象用于指定输入帧大小、质量等级和算法版本等设置。第二步是使用参数对象来处理帧,这个参数对象用来管理输入和输出缓冲区以及插值设置。 对于开发者而言,一个重要决策是要决定是否预先计算光流,这是一个计算成本高昂的过程,会影响 App 性能。

    • 11:16 - 示例应用:运动模糊效果
    • 视频编辑中的动态模糊可模拟较慢的快门速度,为运动中的物体创建模糊效果,使运动看起来更自然、更迅速。你可以使用“VTMotionBlurConfiguration”类来应用这个效果,这需要两个参考帧 (前一帧和后一帧),模糊强度可在 1-100 之间调整。

    • 13:46 - 示例应用:低延迟超高分辨率效果
    • 低延迟超分辨率通过提升分辨率来增强实时视频流。这个过程涉及两个简单的类:一个配置类和一个参数类。这里给出了一个示例,演示了这些功能如何提高视频通话的清晰度。

    • 14:55 - 示例应用:低延迟帧插值
    • 低延迟帧插值有助于改善实时视频流,尤其是在网络连接较慢的情况下,它可消除卡顿,提升流媒体观感。 这个 API 还提供一个结合了帧率倍增和分辨率提升的滤镜,可以让面部特征和背景更清晰、让流媒体播放更流畅。除了这些功能之外,你还可以用这个 API 来创建极具吸引力的应用程序,为它们赋予慢动作和动态模糊等功能以及更好的实时流媒体观看体验。

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 内购买项目
    • 本地化
    • 地图与位置
    • 机器学习与 AI
    • 开源资源 (英文)
    • 安全性
    • 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. 保留所有权利。
    使用条款 隐私政策 协议和准则