这个大众号会道路图式的遍历同享音视频技能:音视频基础(完结)→音视频东西(完结)→音视频工程示例(进行中)→音视频工业实战(预备)。**重视一下本钱不高,错失干货丢失不小 **

WWDC 2022 总共发布了 170 多个 Session,其间与音视频相关的 Session 也有不少,在这儿依据内容相关性分类整理了其间的要害,包含如下这些:

  • 1、HLS 相关
    • HLS 插片广告(HLS Interstitials)
    • HLS 内容转向(HLS Content Steering)
  • 2、EDR 相关
    • 在 iOS 上探究 EDR
    • 依据 CoreImage、Metal、SwiftUI 展现 EDR 内容
    • 依据 AVFoundation、Metal 展现 HDR 视频
  • 3、媒体播映相关
    • 打造强壮的视频播映体会
    • NowPlaying 相关的信息展现和播映交互
  • 4、相机相关
    • 探究 iOS 相机的高档功用
    • 运用 Core Media IO 创立 macOS 相机扩展
  • 5、录屏相关
    • ScreenCaptureKit 初体会
    • 探究 ScreenCaptureKit 的高档才能
  • 6、Metal 相关
    • 探究 Metal 3
    • 快速资源加载
    • Shader 离线编译
    • MetalFX Upscaling
    • Mesh Shaders
    • 光线追寻优化
    • 机器学习硬件加快
  • 7、AR 相关
    • 运用 RoomPlan 扫描房间
    • 探究 ARKit 6
    • AR 体会规划主张
    • 将你的国际带入 AR
  • 8、视频质量相关
    • AVQT 的新功用

整理不易,假如对你有协助,请帮忙重视、转发、点赞一下。

1、HLS 相关

1.1、HLS 插片广告(HLS Interstitials)

拜见:What’s new in HLS Interstitials[1]

HLS interstitials 是苹果在 2021 年提出的插片广告技能计划,它归于 HLS 技能规范,方针是为了更便利的在直播、点播场景中支撑广告内容的部署。在此规范下,无论是在服务器端仍是客户端,它不再需求依赖 SSAI 中的特别标签。服务器能够刺进EXT-X-DATERANGE标签来告知客户端组织插片式播映,如下图所示:

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

本期 HLS Interstitials 添加了新的特性支撑,包含:

1)支撑 CUE 特点装备。

经过该特点来支撑前插广告(PRE)、后插广告(POST);也能够指定是否一次性广告(ONCE)。

2)支撑 X-SNAP 特点。

经过该特点来对齐直播场景中广告插片的时刻偏移。

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

3)新增 HLS_start_offset 和 HLS_primary_id 恳求参数。

HLS_start_offset 用于获取广告已播时长;HLS_primary_id 用于标识播映片段和广告以防止重复播映相同广告。

4)AVFoundation 供给 AVPlayerInterstitialController 和 AVPlayerInterstitialEvent 等 API,用来支撑客户端中插广告播映。

1.2、HLS 内容转向(HLS Content Steering)

拜见:Deliver reliable streams with HLS Content Steering[2]

HLS Content Steering 是苹果公司为了进步全球性流媒体服务的可用性而提出的技能计划,它能够依据服务端负载和冗余情况来动态地将客户端引导到不同的服务器。

本期 HLS Content Steering 添加了新的特性:

1)HLS Content Steering 支撑路径克隆功用。

该功用兼容 Content Stering 1.2。经过该功用能够向已有的 CDN 列表中添加新的 CDN 路径。装备文件中添加新的 CDN 路径时无需填写完好 URI,只需填写服务器和参数字段支撑灵活的 URI 替换规矩。

2、EDR 相关

EDR(Extended Dynamic Range)是苹果推出的一套烘托管线技能,以支撑在不同的屏幕上一起正确显现 SDR 和 HDR 内容。当显现 HDR 的内容时,EDR 并不会直接将 HDR 区域变得更亮,而是辨认到 HDR 内容后进步全体屏幕亮度的一起,下降非 HDR 区域的白点值,使得其看起来没有那么亮。

2.1、在 iOS 上探究 EDR

拜见:Explore EDR on iOS[3]

这个 Session 的内容包含了下面几点:

1)介绍了 EDR API 的新增特性

  • EDR API 开端支撑 iOS 和 iPadOS。
  • 12.9 英寸 iPad Pro 新增两个新特性:Reference 形式支撑 EDR 烘托;Sidecar 支撑 EDR 烘托(Sidecar 是苹果的一项技能,支撑将 iPad 作为 Mac 的扩展屏)。

其间,Reference 形式对 EDR 的支撑如下:

  • 批改 SDR 峰值亮度为 100 nits;
  • 批改 HDR 峰值亮度为 1000 nits(这样就留出了 10 倍(1000 nits / 100 nits)的 EDR headroom);
  • 支撑关闭 HDR Tone Mapping;
  • 支撑关闭环境光自适应(比方,iPhone 的 True Tone、Auto Brightness、Night Shift 等功用);
  • 支撑白点和亮度的手动校准。

2)回忆了 EDR 的技能计划

当烘托时,像素浮点值规模为[0.0, 1.0]的 SDR 内容是始终会正常烘托的。(1.0, EDR headroom]规模的 HDR 内容也是能够烘托的。可是,超越了 EDR headroom 的部分就会被丢掉。

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

EDR headroom 是动态的,它的值受到多种要素的影响,比方:设备的显现技能、当时的显现亮度等等。

咱们一般能够运用下面这个公式大略估计 EDR headroom:

Headroom≈DisplayPeak/SDR

3)EDR 内容的读取

流程如下:

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

4)运用 EDR

要运用 EDR 有下面几个留意点:

  • 要运用CAMetalLayer
  • 设置wantsExtendedDynamicRangeContent为 YES;
  • 内容支撑 EDR:
    • 支撑像素缓冲区格局;
    • 支撑转化函数;
    • 运用扩展的色彩空间。

5)查询 EDR headroom

EDR headroom 的信息能够经过 NSScreen(macOS)或 UIScreen(iOS)来获取。经过查询 EDR headroom 的信息,能够用来做自界说的 Tone Mapping 算法。

6)色彩映射(Tone Mapping)

假如你不想去做自己的 Tone Mapping 算法,而是想用 Apple 内置的算法,需求用到这些才能:

  • CoreAnimation 库供给了跟 EDR metadata 相关的接口;
  • 支撑多种 metadata 参数设置,包含 HDR10 和 HLG 格局;
  • 留意,内置的 Tone Mapping 算法不是大局支撑的,运用之前要查看一下。

在运用之前要查看当时设备是否能够支撑 EDR metadata,然后去初始化对应格局的 EDR metadata,最终将其运用到 CAMetalLayer 来烘托时,就运用体系自带的 Tone Mapping 算法了。

2.2、依据 CoreImage、Metal、SwiftUI 展现 EDR 内容

拜见:Display EDR content with Core Image, Metal, and SwiftUI[4]

在这个 Session 中,回忆了一下 EDR 相关的概念和术语,然后展现了一个依据 Core Image 来添加 EDR 支撑的 Demo,最终提到了怎么用 CIFilter 来创立支撑 EDR 的图画去服务于相关内容的生产。

1)EDR 相关的概念和术语

EDR 相关的概念和术语,在前面的内容现已介绍过了,这儿就不再赘述了。

2)在 SwiftUI 运用中运用 CoreImage 和 Metal 并为其添加 EDR 支撑

相关源码见:Generating an Animation with a Core Image Render Destination[5]

大致流程如下图所示,即 MetalView 调用其delegate来制作,作为署理的 Renderer 在draw()方法中调用 ContentView 来供给图画去制作:

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

接下来,则是在这个流程中添加 EDR 支撑,包含 3 个进程:

  • 1、初始化 MetalView 时,为其添加 EDR 装备;
  • 2、每次烘托动作前,核算 EDR headroom;
  • 3、依据 EDR headroom 构造 CIImage。

3)运用内置的 CIFilter 来支撑 EDR

CoreImage 中有超越 150 款内置的 CIFilter 支撑 EDR。在运用一款 CIFilter 时,要想知道它是否支撑 EDR,要做一下查看。

4)依据 CIColorCube filters 编写自界说的 CIFilter 来支撑 EDR

其间 CIColorCubeWithColorSpace 是一个比较受欢迎的用于 SDR 图片的滤镜。曾经,在运用它时有一个严厉的限制:输入和输出的 RGB 色彩值都在 0-1 的规模内。当咱们要支撑 EDR 时,能够装备 CIColorCubeWithColorSpace 滤镜的色彩空间为 EDR 格局的色彩空间,比方:HLG 或 PQ,这时候就能够打破 RGB 色彩值只在 0-1 规模的限制了,然后生产出最佳作用的 EDR 的内容。可是,需求留意,对应的 cube data 需求在对应色彩空间的有用规模内。一起,还或许需求添加 cube data 的维度。

有时候,你或许想要运用 SDR cube data 用于 EDR 图画,在最新的 API 中,能够设置extrapolate特点为true来告知 filter 来对 SDR cube data 进行揣度,这时候你就能够给一个 filter 输入一个 EDR 图画,并从输出取得 EDR 图画。

5)编写自界说 CIKernel 的最佳实践

以往关于 RGB 的值必须坚持在 0-1 规模内的限制能够去掉了,超越这个规模,CIKernel 也能够正常作业。可是,alpha 值依然需求坚持在 0-1 的规模内。

2.3、依据 AVFoundation、Metal 展现 HDR 视频

拜见:Display HDR video in EDR with AVFoundation and Metal[6]

这个 Session 中介绍了怎么依据 AVFoundation 和 Metal 来构建高效的 EDR 烘托管线。其间,包含:

  • 介绍怎么支撑 EDR 视频的播映。不仅是简略的依据黑盒的 AVPlayer 来完结,会深化的介绍怎么依据 AVFoundation 来解码 HDR 视频,并在自界说的 EDR layer/view 上烘托。
  • 介绍怎么支撑 EDR 视频的后处理。依据 CoreVideo Display Link 实时拜访解码后的的视频帧并送给 CoreImage filter 或 Metal shader 来进行图画或特效处理,最终将处理后的视频帧交给 Metal 来烘托。

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

整个 Session 的内容从下面几个方面打开:

1)Apple EDR 视频结构

Apple EDR 视频结构如下图所示:

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

关于不同的运用场景,咱们能够挑选不同的结构来完结:

  • 简略的播映 HDR 视频,能够运用 AVKit 和 AVFoundation;
  • 在指定的 layer 上播映 HDR 视频,能够运用 AVPlayerLayer;
  • 对 HDR 视频帧做后处理,能够运用 AVPlayer、CADisplayLink 将 CVPixelBuffer 发送给 CoreImage 进行图画处理;
  • 对 HDR 视频帧做后处理和烘托,能够运用 AVPlayer、CVMetalTextureCache 将 MetalTexture 发送给 Metal 进行图画处理和烘托。

2)运用 AVKit 和 AVFoundation

假如需求简略的播映 HDR 视频媒体烘托到 EDR,能够运用 AVPlayerViewController 烘托 AVPlayer,也能够运用 AVPlayer 和 AVPlayerLayer 在 iOS 或 macOS 上播映自己的视图。

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

假如需求完结实时视频作用,大致流程如下:

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

最终烘托一般都运用 CAMetalLayer,要支撑正确的烘托 HDR 视频,还需求为 CAMetalLayer 设置一些特点:wantsExtendedDynamicRangeContent、pixelFormat、colorspace。

3)运用 CoreVideo 和 Metal

CVMetalTextureCache 是一种将 CVPixelBuffer 与 Metal 结合运用的简略有用的方法。CVMetalTextureCache 很便利,能够直接从缓存中获取 Metal 纹路,无需进一步转化。CVMetalTextureCache 主动桥接 CVPixelBuffer 和 MetalTexture,然后既简化了代码,又坚持了高效。经过坚持 MTLTexture 到 IOSurface 的映射,CVMetalTextureCache 与 CVPixelBufferPools 合作运用还供给了功用优势。最终,运用 CVMetalTextureCache 消除了手动跟踪 IOSurfaces 的需求。下面的示例将展现怎么运用 CVMetalTextureCache 从 Core Video 中直接提取 Metal 纹路,大致流程如下图所示:

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

3、媒体播映相关

3.1、打造强壮的视频播映体会

拜见:Create a great video playback experience[7]

这个 Session 介绍了新规划的播映器,并展现了最佳实践来协助咱们构建最佳的媒体播映体会。此外,还探讨了视频对 Live Text 特性的支撑,这个特功用够让咱们从视频帧中直接辨认和复制出文字,此外还介绍了怎么在咱们的运用中集成插片广告和播映速度操控才能。

1)新播映器界面

新界面如图:

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

此外,新播映器还支撑了更多便捷的手势操作,比方:手指缩放画面来适配屏幕、全屏左右滑动来 seek 和预览等交互。

2)播映及交互体会

新的播映器规划总体上遵从 Intuitive、Integrated、Content forward 三个原则。

在许多细节规划上更符合人们对实际国际的习惯,能被更天然的了解。比方,播映器进入和拖拽退出的动画、拖动进展时的惯性作用等等。

3)视觉智能

新的播映器能够支撑像处理其他文本相同获取视频帧中的文字:

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

4)插片广告

新的 iOS 播映器开端支撑插片广告了,其间 HLS 流协议对插片广告的支撑在前面 HLS 相关的内容中现已讲过,就不再多说了。关于非 HLS 协议的内容,AVFoundation 则供给了新的 API 来支撑产品广告。

5)播映变速

AVPlayerView 和 AVPlayerViewController 开端支撑播映速度操控的 menu,而且支撑自界说倍速和文案的本地化。

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

3.2、NowPlaying 相关的信息展现和播映交互

拜见:Explore media metadata publishing and playback interactions[8]

这个 Session 首要介绍了怎么在每个渠道上杰出显现运用的 NowPlaying 信息。包含介绍媒体元数据的概述,以及怎么在确定屏幕和操控中心等区域中出现 NowPlaying 界面,并展现怎么编写和发布有用的媒体元数据。此外,还介绍了运用怎么呼应来自其他设备(比方 HomePod)的指令。

当运用 AVFoundation 进行媒体播映时,发布 NowPlaying 元数据和呼应其播映交互的最佳方法是运用 MPNowPlayingSession 类。MPNowPlayingSession 能够用来表明不同的播映会话,并在运用中包含多个播映会话时,供给对 NowPlaying 状况的操控,支撑手动发布元数据,并在 iOS 16 后支撑主动发布元数据。

这儿所讲的主动发布的元数据包含:媒体资源的时长、已播映时长、播映状况、播映进展,以及其他能够添加到 Player Item 的信息(标题、描述、封面等等)。

一旦设置了主动发布元数据(设置 MPNowPlayingSession 的 automaticPublishNowPlayingInfo 特点为 true),MPNowPlayingSession 实例将开端观察播映器的状况变化并更新对应的 UI。

4、相机相关

4.1、探究 iOS 相机的高档功用

拜见:Discover advancements in iOS camera capture: Depth, focus, and multitasking[9]

这个 Session 中的内容从下面几个方面打开:

1)激光雷达扫描仪(LiDAR Scanner)

iPhone 12 Pro、iPhone 13 Pro、iPad Pro 等更高功用的设备上现已装备了 LiDAR 扫描仪,它能够在扫描时探测周围物体的远近,然后输出环境的深度信息。激光雷达和其他摄像头合作运用能够在拍照景深图画和视频、增强实际等场景中完结更强壮的功用。

2)面部驱动的主动对焦和主动曝光

主动对焦体系调整镜头以坚持主体明晰,主动曝光体系则平衡场景中最亮和最暗的区域以坚持主体可见。可是,有时所做的主动调整并不能使拍照目标的脸部坚持对焦,在明亮的背光场景下,拍照目标的脸部或许很难看清。

假如不敞开面部驱动的主动对焦,相机会坚持对布景的对焦,而无需从头对焦于面部。启用面部驱动主动对焦后,相机会主动对焦人脸,这样就能使人脸更明晰。当人脸脱离画面时,相机会将焦点转移到布景上。

下面是未敞开面部驱动的主动对焦和主动曝光和敞开后的对照:

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

敞开面部驱动主动对焦的前后对照

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

敞开面部驱动主动曝光的前后对照

3)高档视频收集流

iOS 16 和 iPadOS 16 中的新增功用,运用程序能够一起运用多个 AVCaptureVideoDataOutput。关于每个视频数据输出,能够自界说分辨率、防抖、方向和像素格局。

当咱们需求预览收集的视频并进行录制时,咱们能够对预览和录制分两路流采用不同的设置。关于预览,分辨率一般不必过高,适配设备的屏幕即可,这样能够处理的更快以完结低推迟预览。在录制时,则能够设置高分辨率捕获并运用质量作用。经过添加第二个 AVCaptureVideoDataOutput 的才能能够扩展内容收集,然后优化视频数据输出:一个输出能够运用较小的缓冲区用于预览,另一个能够运用全尺度的 4K 缓冲区进行录制。

别的,对预览和录制运用不同的防抖形式也是对它们采用独立的视频数据输出的一个原因。因为防抖会为视频收集带来更大的推迟,在预览情况下是不可取的;而关于录制则能够运用防抖算法来取得更好的内容体会。

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

除了运用多个视频数据输出之外,从 iOS 16 和 iPadOS 16 开端,运用程序能够在从 AVCaptureVideoDataOutput 和 AVCaptureAudioDataOutput 接收数据的一起运用 AVCaptureMovieFileOutput 进行录制。

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

4)在多使命场景运用相机

在 iPad 上,用户能够经过多种方法履行多项使命。例如:在分屏阅览或运用幻灯片阅览笔记时录制语音备忘录;在 Safari 上方的浮动窗口中全屏书写笔记;运用画中画在播映视频时添加观看更多 WWDC 视频的提醒。借助 iPadOS 16 新增的 Stage Manager,用户能够在可调整巨细的浮动窗口中打开多个运用程序。从 iOS 16 开端,AVCaptureSessions 将能够在多使命处理时运用相机。

可是,在多使命场景运用相机或许带来功用问题,这时候能够考虑下降帧率、运用下降分辨率、运用非 HDR 格局等方法来下降运用程序的资源耗费来提升功用。

4.2、运用 Core Media IO 创立 macOS 相机扩展

拜见:Create camera extensions with Core Media IO[10]

这个 Session 首要介绍了怎么运用 Core Media IO 来为软件相机、硬件相机以及创意相机创立 macOS 的扩展。这种扩展方法比旧版的 DAL 插件计划更安全、快速,而且能够与任何运用相机输入的运用程序兼容。

下面展现了将 macOS 的扩展用于创意相机场景的示例:扩展程序拜访来自多个相机的视频流,将它们合成后再发送到运用程序。

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

像这样的创意相机或许会需求一个装备程序来操控合成、过滤器的参数。

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

5、录屏相关

5.1、ScreenCaptureKit 初体会

拜见:Meet ScreenCaptureKit[11]

这个 Session 介绍了怎么运用 ScreenCaptureKit 为 macOS 上的屏幕同享运用、视频会议运用、游戏流媒体运用等供给高功用的音频和视频的屏幕录制才能。ScreenCaptureKit 支撑对录制内容进行实时动态过滤,能够从显现器、运用程序和窗口的任意组合中挑选要录屏的内容。ScreenCaptureKit 还支撑设置与显现器一致的原始分辨率和帧率,也能够依据流的内容调整相关质量参数,还支撑躲藏鼠标光标。

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

5.2、探究 ScreenCaptureKit 的高档才能

拜见:Take ScreenCaptureKit to the next level[12]

这个 Session 愈加细致的介绍了怎么运用 ScreenCaptureKit 进行杂乱的屏幕录制,包含:怎么兼并各种高档选项,包含微调内容过滤器、帧元数据解释、窗口挑选器等;怎么装备流以取得最佳功用。

ScreenCaptureKit 供给了丰富的功用,包含高度可定制的内容操控,能够轻松挑选要捕获的窗口、运用程序和显现的任意组合;能够捕捉到屏幕内容的原始分辨率和帧率;动态设置流特点,如分辨率、帧速率、像素格局;这些装备能够在不从头创立流的情况下即时修改。此外,ScreenCaptureKit 支撑:捕获由 GPU 内存支撑的缓冲区以削减内存副本;支撑硬件加快的内容捕获、缩放、像素和色彩格局转化,以下降 CPU 运用率来完结高功用捕获;支撑视频和音频捕获。

下图展现了 ScreenCaptureKit 的窗口过滤作用:

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

下图展现了怎么设置 ScreenCaptureKit 的纹路缓冲区长度来防止帧推迟和丢帧:

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

6、Metal 相关

6.1、探究 Metal 3

拜见:Discover Metal 3[13]

这个 Session 介绍了晋级后的 Metal 3 带来的功用提升和引入的新特性。比方:更快的资源加载、支撑 Shader 离线编译(构建时编译而非运转时编译)、上采样烘托高分辨率图画、运用 Mesh Shader 处理杂乱的几许图形、光线追寻优化、机器学习硬件加快等等。

下面从这几个方面打开介绍一下:

1)Fast Resource Loading

现在的游戏和运用许多都需求加载资源资料来进行制作,将很多的小资源从文件中流式的加载传输到 Metal 资源中是完结高质量视觉作用的一种计划,可是传统的存储 API 是为大尺度的资源恳求而规划的。

Metal 3 的 Fast Resource Loading 机制能够支撑多个小尺度资源的恳求,经过运用与图形和核算指令形式相同的加载指令来恳求小尺度资源,每个指令都进入指令行列进行异步提交,无需额定进程即可直接加载资源到 Metal 缓冲区和纹路中,然后节约开发作业量和传输时刻。Fast Resource Loading 运用 Metal 同步原语使得 GPU 指令和加载指令能够轻松的协作。

下面展现了 Metal 纹路串流怎么从 Fast Resource Loading 中获益:

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

更多内容能够了解:Load resources faster with Metal 3[14]

2)Offline Shader Compilation

下图展现了 Shader 离线编译下降卡帧:

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

下图展现了 Shader 离线编译下降加载耗时:

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

更多内容能够了解:Target and optimize GPU binaries with Metal 3[15]

3)MetalFX Upscaling

MetalFX 是为 Metal 运用程序供给渠道优化的图形烘托作用的一个结构,统筹高功用和高质量。MetalFX Upscaling 机制经过高功用的上采样和抗锯齿才能协助咱们在更短的时刻内烘托高质量的图形,并支撑挑选时刻或空间算法的组合来进步功用。

虽然 Retina 分辨率为咱们的运用和游戏供给了更明晰的图画,但生成一切这些像素也带来了很大的功用开支。运用 MetalFX Upscaling 则能够生成较低分辨率的图画,然后让结构动态生成高质量、高分辨率图画,这样也能以更低本钱取得更高的帧率。

更多内容能够了解:Boost performance with MetalFX Upscaling[16]

4)Mesh Shaders

传统的可编程图形管道能够在着色器中改换极点,然后将其组装到图元中,以便经过固定功用的硬件进行栅格化。对大部分的运用场景,这套计划现已满足了。可是在有些运用事例中,比方除掉,需求拜访整个图元,每个极点需求独立读取、改换和输出,因此不能在制作中途添加极点或图元。

高档的几许图形处理需求更高的灵活性,一般这就意味着要在核算进程中对图形进行预处理,这样需求在设备内存中存储大量的中间几许,很难对内存开支做预估。Metal Mesh Shader 则推出了另一种几许处理管线:用灵活的二阶段模型取代了传统的极点阶段,支撑对几许图形进行分层处理。第一阶段剖析整个目标以决定是否在第二阶段扩展、缩短或细化几许。它经过在烘托进程中供给核算才能来完结这一点,而不需求中间设备内存存储。Mesh Shader 十分合适履行 GPU 驱动的除掉、LOD 挑选和程序生成几许的运用。

简而言之,即烘托管线顶用新的 Object 和 Mesh Shader 取代原先的 Vertex Shader,然后支撑愈加灵活的遮挡除掉和 LOD 挑选。

下面对比了传统的程序生成几许流程和依据 Mesh Shader 的程序生成几许流程的差异:

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

更多内容能够了解:Transform your geometry with Metal mesh shaders[17]

5)光线追寻优化

Metal 3 为光线追寻管道带来了显着的加快。首要,加快结构的构建时刻更短,有更多的 GPU 时刻来制作和追寻光线;其次,因为新增了 Indirect Command Buffer 对光线追寻的支撑,诸如除掉之类的 CPU 操作能够转移到 GPU;最终,Metal 3 光线追寻支撑直接拜访原始数据以精简和优化相交和着色。

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

更多内容能够了解:Maximize your Metal ray tracing performance[18]

6)机器学习硬件加快

Metal 3 在加快机器学习方面进行了严重改善,额定支撑在 Mac 上加快网络练习,并对图形和媒体处理运用程序中的 ML 推理进程进行了严重优化。

TensorFlow 在 Mac Studio/M1 Ultra 上经过 GPU 加快与在 CPU 上的练习比较,在各种网络上达到了高达 16 倍的加快。

PyTorch 在 Mac Studio/M1 Ultra 上经过 GPU 加快与在 CPU 上的练习比较,能够将 BERT 模型的练习速度进步 6.5 倍,将 ResNet50 的练习速度进步 8.5 倍。

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

Metal 3 支撑的设备

更多内容能够了解:Accelerate machine learning with Metal[19]

7)Metal 3 开发东西

Metal 3 不仅仅是功用,它还包含一套全面的高档开发东西。比方:Xcode 14 中的 Metal Dependency Viewer 能够更轻松地可视化整个烘托器或扩大单个通道;Xcode 14 中改善的 Acceleration Structure Viewer 可协助您充分运用 Metal 3 的优化光线追寻,等等。

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

7、AR 相关

7.1、运用 RoomPlan 扫描房间

拜见:Create parametric 3D room scans with RoomPlan[20]

这个 Session 介绍了 RoomPlan 结构,运用它能够在支撑 LiDAR 激光雷达的 iPhone/iPad 上扫描您的房间。它会生成房间的参数化 3D 模型及房间界说目标,您能够在运用程序中运用这些模型。

RoomPlan 运用由 ARKit 供给支撑的杂乱机器学习算法来检测墙壁、窗户、开口、门、壁炉、沙发、桌子和橱柜等房间界说目标。其间 RoomCaptureView API 运用 RealityKit 实时出现扫描进展,能够轻松地将扫描体会集成到运用程序中。当完结扫描后,RoomCaptureView 会显现最终的后处理成果。

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

经过 RoomPlan 扫描的数据能够导出为 USD/USDZ 的数据格局,而且能够在 Cinema 4D 中直接打开和修改。

7.2、探究 ARKit 6

拜见:Discover ARKit 6[21]

这个 Session 介绍了 ARKit 新的才能:在 ARKit 中启用 4K 视频形式,支撑以目前最高的图画分辨率运转相机;添加了一些额定的相机增强功用,能够更好地操控视频布景;更新了平面锚点的行为,添加了 Motion Capture API;扩大了支撑方位锚点的新城市。

1)4K 视频

在为 ARKit 拍照图画时,运用了图画传感器上一个 3840×2880 像素的区域,在捕获图画后,做了一个 Binning 的进程:对每个 2×2 像素的区域,均匀像素值,然后写回单个像素。

这个处理有 2 个的优点:1)图画尺度削减了 4 倍,缩小到 1920×1440 像素。因此,每一帧耗费的内存和处理才能要少得多,然后答应设备以高达每秒 60 帧的速度运转相机,并开释资源用于烘托。2)此进程在弱光环境中具有优势,其间像素值的均匀可下降传感器噪声的影响。

假如运用 RealityKit,则会主动对图画进行进一步处理以用作布景:缩放以匹配 2532 像素的屏幕宽度,并裁剪以匹配显现纵横比。RealityKit 在结构顶部履行烘托和合成虚拟内容的使命,并在屏幕上显现最终成果。在 4K 形式下,支撑每秒 60 帧的速度收集视频,RealityKit 会做好缩放、裁剪和烘托。

2)相机增强

新的增强功用包含:高分辨率布景相片 API、启动新的 HDR 形式、在 ARKit 中读取 EXIF 标签(EXIF 标签包含有关白平衡、曝光和其他对后期处理有价值的信息)等等。

3)平面锚点(Plane Anchor)

ARKit 6 中更新了平面锚点的行为,能够明晰地别离平面锚点和底层几许平面。

在 iOS 15 中,运转会话时,平面会依据新进入视界的画面逐步更新平面,而且在每次更新几许平面时,平面锚点也会旋转更新以反映平面的新方向。在 iOS 16 中,在平面锚点和它的几许平面之间做了更明晰的别离,当新的画面逐步进入视界,平面逐步更新时,平面锚点却坚持自身不变。

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

一切关于平面几许的信息现在都包含在一个名为 ARPlaneExtent 的类中,旋转更新不再经过旋转平面锚自身来表明。相反,ARPlaneExtent 包含一个新特点 rotationOnYAxis,它表明旋转角度。除了这个新特点之外,平面完全由宽度和高度以及 PlaneAnchor 的中心坐标界说。

4)动作捕捉(Motion Capture)

动作捕捉的更新包含 2D 骨架和 3D 骨架。

关于 2D 骨架:新增两个新关节的跟踪才能:左耳和右耳;改善了全体姿势检测。

在 iPhone 12 及更高版别上,以及装备 M1 芯片的最新 iPad Pro 和 iPad Air 机型上,3D 骨架跟踪也得到了改善:更少的抖动和更好的时刻一致性;假如人的部分被遮挡或走近相机时,跟踪也会愈加安稳。

4)地理方位锚点(Location Anchor)

Location Anchor 现已在美国越来越多的城市和英国伦敦推出。后续将继续添加支撑的城市包含:加拿大的温哥华、多伦多和蒙特利尔等城市;新加坡和日本的七个大都市区(东京等);澳大利亚的墨尔本和悉尼;新西兰奥克兰;以色列特拉维夫;法国巴黎。

假如想知道在特定坐标处是否支撑地理方位锚点,需运用 ARGeoTrackingConfiguration 的 checkAvailability 方法。

7.3、AR 体会规划主张

拜见:Qualities of great AR experiences[22]

这个 Session 首要讨论了创立 AR 运用时的一些规划主张。包含怎么将人们引导到正确的环境、怎么合理运用屏幕空间、怎样对持续移动的场景规划 AR 交互、怎么考虑人体工程学和有限视界的限制、怎么运用深度提示以及对体会时长加以限制防止功用问题和用户疲倦。

7.4、将你的国际带入 AR

拜见:Bring your world into augmented reality[23]

这个 Session 介绍了怎么运用 Object Capture 和 RealityKit 将实际国际的目标带入 AR 游戏。展现了怎么运用 Object Capture 结构捕获物体,将它们添加到 Xcode 中的 RealityKit 项目,运用程式化着色器和动画,并将它们用作 AR 体会的一部分。还介绍了运用 ARKit、RealityKit 和 Object Capture 时的最佳实践。

要做好目标捕获,有几点需求留意:

  • 挑选具有正确特征的目标:
    • 物体外表要有满足的纹路。假如目标的某些区域是无纹路或透明的,则这些区域的细节或许无法很好地重建。
    • 物体外表没有眩光和反射。假如物体没有磨砂外表,能够测验运用漫射照明削减其上的镜面反射。
    • 假如想翻转物体以捕捉其底部,请确保您的物体坚持刚性,即物体在翻转时不应该改动它的形状。
    • 物体在必定程度上包含精密的结构,但你需求运用高分辨率相机并拍照特写相片才能重建物体的精密细节。
  • 树立一个理想的捕捉环境:
    • 捕捉环境具有良好、均匀和漫射的照明。确保安稳的布景很重要并在物体周围留有满足的空间。
  • 拍照目标的高质量相片:
    • 物体处在干净简洁的环境下,使得物体能在相片中显着脱颖而出。比方,放在干净的白色桌子上。
    • 多角度拍照多种相片。包含不同高度,不同旋转角度等。
    • 确保物体悉数展现在相片中,而且最大程度统筹明晰度和细节。

在拍完相片后,下一步便是将相片复制到 Mac 上运用 Object Capture API 处理它们。

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

能够从四个不同的详细等级中进行挑选,这些等级针对不同的用例进行了优化:

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

8、视频质量相关

8.1、AVQT 的新功用

拜见:What’s new in AVQT[24]

AVQT(Advanced Video Quality Tool)是苹果在 2021 年推出了视频质量剖析东西。经过输入给 AVQT 源视频和编码后的视频,经过 AVQT 处理后对编码后的视频进行打分。AVQT 是一个 macOS 的东西,能够模仿真人对视频质量进行打分,支撑帧等级以及段等级(一段一般是 6s,可装备)的打分,支撑依据 AVFoundation 的一切视频格局,包含 SDR、HDR、HDR 10、HLG 以及 Dolby Vision。

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

AVQT 独有的三个要害特性:首要,AVQT 与人们怎么点评视频具有高度相关性。这适用于一切内容类型,例如动画、天然场景和运动。其次,AVQT 具有优异的处理速度,这要归功于 AVQT 依托 AVFoundation 和 Metal 来进行视频解码和处理。第三,AVQT 旨在适应不同的观看设置。依据观看设置,相同的视频或许会发生不同的体会。这能够经过显现分辨率、显现尺度和观看距离等要素在 AVQT 中进行装备。

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

本年对 AVQT 的更新包含以下几点:

1)支撑 HTML 可视化陈述

本年对 AVQT 做了增强,最新版别的 AVQT 可生成 HTML 的可视化陈述,其间包含显现视频质量剖析的交互式图表和图表。经过添加新的『可视化』标志能够轻松生成这些陈述。

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

2)支撑对视频指定时刻段的内容进行评分

另一个新功用是能够给要评价的视频和参阅视频指定时刻窗口(经过指定帧数),然后能够只重视这个视频中的某些片段或特定场景的质量。它还答应比较未在时刻上对齐的视频。

3)支撑原始 YUV 格局

在最新的版别中,AVQT 扩展了对原始 YUV 格局的支撑,包含 444、422、420、411、410 等采样格局,8 位、10 位、12 位、16 位等位深。这能够对从未紧缩过的视频进行评分,例如原始相机发送过来的视频。

4)支撑 Linux

AVQT 现在能够在 Linux 上运用,这将答应人们评价存储在云中或在依据 Linux 的服务器中紧缩的内容,而无需移动视频。

参阅资料

[1]

What’s new in HLS Interstitials:developer.apple.com/videos/play…

[2]

Deliver reliable streams with HLS Content Steering:developer.apple.com/videos/play…

[3]

Explore EDR on iOS:developer.apple.com/videos/play…

[4]

Display EDR content with Core Image, Metal, and SwiftUI:developer.apple.com/videos/play…

[5]

Animation with a Core Image Render:developer.apple.com/documentati…

[6]

Display HDR video in EDR with AVFoundation and Metal:developer.apple.com/videos/play…

[7]

Create a great video playback experience:developer.apple.com/videos/play…

[8]

Explore media metadata publishing and playback interactions:developer.apple.com/videos/play…

[9]

Discover advancements in iOS camera capture:developer.apple.com/videos/play…

[10]

Create camera extensions:developer.apple.com/videos/play…

[11]

Meet ScreenCaptureKit:developer.apple.com/videos/play…

[12]

Take ScreenCaptureKit to the next level:developer.apple.com/videos/play…

[13]

Discover Metal 3:developer.apple.com/videos/play…

[14]

Fast Resource Loading:developer.apple.com/videos/play…

[15]

Offline Shader Compilation:developer.apple.com/videos/play…

[16]

MetalFX Upscaling:developer.apple.com/videos/play…

[17]

Metal Mesh Shader:developer.apple.com/videos/play…

[18]

Maximize Metal Ray Tracing Performance:developer.apple.com/videos/play…

[19]

Accelerate Machine Learning with Metal:developer.apple.com/videos/play…

[20]

Create parametric 3D room scans with RoomPlan:developer.apple.com/videos/play…

[21]

Discover ARKit 6:developer.apple.com/videos/play…

[22]

Qualities of great AR experiences:developer.apple.com/videos/play…

[23]

Bring your world into augmented reality:developer.apple.com/videos/play…

[24]

What’s new in AVQT:developer.apple.com/videos/play…

– 完 –

推荐阅览

《WWDC 2022 音视频相关 Session 概览(EDR 相关)》

《WWDC 2022 音视频相关 Session 概览(HLS相关)》

《iOS 视频处理结构及要点 API 合集》

《iOS 音频处理结构及要点 API 合集》