大多数浏览器和
Developer App 均支持流媒体播放。
-
支持 Alpha 通道的 HEVC 视频
HEVC 视频增加了对 alpha 通道的支持,您现在可以在 app 和网页上通过自定背景合成视频。了解如何制作兼容的媒体,以及进行播放的最佳做法。
资源
相关视频
WWDC19
-
下载
大家好 我是 Shiva Sundar 非常高兴能和大家讨论 有 Alpha 通道 的 HEVC 视频
你也许很熟悉 图像文件中的 Alpha 通道
Alpha 通道在图像文件 App 和网络中无处不在
当图像文件中有 Alpha 通道时 图像中的每个像素 都会得到不透明度及其颜色
这使得我们 可以得到一个复杂的 非矩形的图像 但在许多不同的背景下 合成时看起来很自然
所以 Alpha 通道和透明度很常见 主要通过像 PNG 这样的 静止图像格式 在网络上使用
视频中的 Alpha 不太常见
它是专业的 视频工作流程工具 专业视频工作流 如 Apple ProRes 4444 中 使用的格式数据速率非常高 不适合传送
2017 年 Apple 推出了 对 HEIF 图像文件格式的支持 这使我们可以 利用 HEVC 中的 高级有损压缩技术 来压缩静止图像
HEIF 还允许在图像文件中 包含 Alpha 通道
事实上 今年我们增加了 对 HEIF 序列的支持 允许你在一个文件中 拥有多个图像
HEIF 序列也支持 Alpha 通道
一段时间以来 我们已经认识到 采用较低比特率的方式 将 Alpha 包含在动态视频当中的需求
所以我们说 让我们来使用 先进的有损压缩技术 来支持视频文件中的 Alpha 通道
在所有支持的设备和计算机上 iOS 13 tvOS 13 和 macOS Catalina 都支持使用 Alpha 播放 HEVC 视频
所有具有 HEVC 编码器的 设备和计算机 都支持编码
拥有 Alpha 格式的视频 效果很好 其比特率足够低可以分发 这创造了许多机会
你可以使用 丰富的非矩形动态视频内容 作为 App 表达体验的一部分
它可以像动画一样 预先渲染 这样的元素 可以在复杂的背景上移动 甚至有几个元素 可以给人一种 深度或复杂交互的感觉
因为这些是视频 它们可以有同步的音轨 所以这样一来 这些非矩形影片中的角色 就可以说话了
超级专业的 Alpha 通道 内容 为你而设 Woo-hoo Woo-hoo 它们可以将 SpriteKit SceneKit 或 Metal 集成到游戏当中
在本文中 我们向你提供了一些示例代码 介绍了如何用 Alpha 通道 将 SceneKit 场景录制到 HEVC 视频中 以及如何在 SpriteKit 场景 中渲染另一个场景
在网页上 它们可使互动元素活跃起来 iOS 13 和 macOS Catalina 中的 Safari 支持带有 Alpha 的 HEVC 视频
Safari 还可以告诉网页 是否支持此功能
想要获得有关 API 媒体功能的 更多使用信息 请务必查看这个视频 《What's New in Authentication, Safari and WebKit》
以低比特率分散 带有 Alpha 的视频 这种能力为创作 App 提供了机会 以提供背景删除
现在我站在一张 挂在墙上的绿色幕布前 这是用 iPhone 录制的
我希望我在这里 我使用了一个自定义的视频合成器 和一个共同图像过滤器 用透明来替换绿色像素 并将其导出到一个 带 Alpha 的影片当中
我希望我在这里
现在我可以 在我喜欢的任何背景上
叠加这个视频
我们将提供示例代码 显示了如何执行此操作 并使用 Alpha 影片编写生成的 HEVC 视频
那么这是如何工作的呢
如你所知影片文件 包含各种媒体类型的曲目
视频轨道包含视频帧
带有 Alpha 的 HEVC 视频包含在 影片的单个视频轨道内
在单轨中 每个帧包含两个称为层的部分 每个层使用 HEVC 编解码器 进行压缩
底层像往常一样 包含帧的彩色图像
Alpha 图层仅包含 帧的 Alpha 通道
这是使用特殊的 HEVC 语法来完成的 能识别出这两个层级
该语法的 HEVC 规则 意味着 不知道如何处理 Alpha 层的 HEVC 解码器 将忽略它并仅显示基本层
我们来继续讨论 如何使用它
具有 Alpha 编码的 HEVC 被集成到众多 AVFoundation API 中 例如 我们看看内容创建
你可以在 App 中 使用 Alpha 渲染视频帧 并使用 AVAssetWriter 进行编码 并将其写入影片文件
你可以使用 AVAssetExportSession 提供的新预设 将包含 Alpha 包括 Apple ProRes 4444 的视频格式 转码为带 Alpha 的 HEVC
这些新的 HEVC 预设 带有 WithAlpha 的后缀
你还可以使用 AVAssettExportSession 以特定的背景色刻录 将具有 Alpha 的影片 转换为不带 Alpha 的影片 该影片将在不支持带有 Alpha 的 播放器上播放
或者你也可以 通过 VTCompressionSession 将 HEVC 与 Alpha 视频编码器配合使用
我们来看看 AVFoundation 的回放 API AVPlayer 和 AVPlayerLayer 支持带有 Alpha 的 HEVC 通过 Core Animation AppKit 和 UIKit 显示在 App 视图层次结构中
AvPlayerLayer 中的视频 将以透明背景显示 并与其他层和视图融为一体
或者你可以使用 AVPlayerItemVideoOutput 直接访问一系列 已解码的视频帧
当你想要将这些视频帧 合并到使用 Metal SpriteKit 和其他基于 GPU 的 渲染 API 的自定义渲染中时 这是个很好的选择 如果你需要 为其他目的而解码帧 可以直接使用 AVAssetImageGenerator 和影片的单个帧 作为带 Alpha 的 CGImage
你可以使用 AVAssetReader 提取视频帧以用于 非回放工作流
你也可以直接通过 VTDecompressionSession 将 HEVC 与 Alpha 视频解码器配合使用 视频解码器配合使用
简而言之 因为带有 Alpha 的 HEVC 在视频编解码器的级别 集成到了 AVFoundation 中 所以以它很适合所有熟悉的 API 工作流
现在让我们看看 如何在代码中实现这一点
对影片进行编码时 在配置 AVAssetWriter 输入 或 VTCompressionSession 时 使用带 Alpha 的 视频编解码器类型 HEVC
这是 Alpha 通道 应编码的特殊信号 编码文件将具有 标准 HEVC 编解码器类型 它将向后兼容 不能读出 Alpha 的 HEVC 播放器 将只显示基本视频层 它将忽略 Alpha 部分
如果使用 Alpha 通道 你可能会明白 有两种方法 可以将视频数据写入文件 Premultiplied Alpha Straight Alpha 后者也被称为 Unassociated Alpha 或 Non-premultiplied Alpha
这些选择之间的权衡 超出了本次讨论的范围
如果你熟悉这些 你要知道的是 两者都能被支持
假如与这些不相似 我们建议使用默认值 即 Premultiplied Alpha 它是大多数基于 GPU 的 渲染部件的自然选择 并且具有更好的伸缩性
现在查看代码 你可以通过 配置压缩会话 或作为缓冲附件 来指定 Alpha 模式 作为一种安全机制 如果设置和缓冲区附件 都被指定并且 它们不匹配败 编码操作将失败
我们的 API 要求 Alpha 通道 以固定的质量进行编码 因为 Alpha 通道中的 视频编码失真可能很麻烦 因为相同的失真 不会出现在基础层中
如果需要 我们的 API 可让你分别控制 基本层比特率 和 Alpha 通道的质量 现在我们来看看代码 你可以使用 Alpha 参数的目标质量 指定 Alpha 图层质量
它的区间在 0 和 1 之间 其中 1 表示它接近无损
指定的比特率参数 仅适用于基础层 Alpha 图层将忽略该参数
要检测 Alpha 通道的存在 可以用 withMediaCharacteristic:.containsAlphaChannel 来测试 也可以查询 formatDescription.extensions 的布尔值
如果你试图 用 Alpha 影片导出 HEVC 请使用 determineCompatibility API 以验证源资源中 是否存在 Alpha
此验证只考虑源影片 而不考虑视频合成 因此如果使用视频合成 从没有 Alpha 通道的源 生成新的 Alpha 通道 则必须跳过它
当前生态中有很多 视频播放器
不支持 HEVC 更不用说带 Alpha 通道的 HEVC 了
可以通过以纯色背景颜色 进行刻录来移除 Alpha 通道
我们添加了一些方便的 API 和示例代码 来帮助简化这种转换
如果你希望 在非 Apple 媒体框架中 构建支持 我们已经发布了 应该阅读的互操作性配置文件的规范 你们应该阅读一下 但是如果你等不及了 这里可以先睹为快
总而言之带有 Alpha 的 HEVC 视频是一个很酷的新功能 它利用了 HEVC 最先进的压缩技术
iOS 13 tvOS 13 和 macOS Catalina 都支持它
它利用了最近 设备上的硬件加速
它很好地集成到 AVFoundation 中 可以在你的 App 中使用
它还集成在 Safari 中 用于你的 Web 体验
带有 Alpha 的 HEVC 为开发人员和用户 带来了新的 有创造性的表达机会 我们已经迫不及待地 想看看你在 App 中 如何利用它 感谢大家
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。