-
探索生成式字幕和字幕样式
利用生成式字幕,让视频内容更加便于访问——这是一项强大的新功能,可使用设备端模型来转录语音内容或翻译其他语言的字幕。探索字幕样式预览,以便用户在播放过程中自定义和预览字幕样式。你还将深入了解 AVKit、AVPlayerLayer 和 Media Accessibility 框架的实现细节。
章节
- 0:00 - Introduction
- 1:10 - Media authoring
- 2:14 - Subtitle generation methods
- 3:03 - Availability and support
- 4:31 - Presenting subtitles in your app
- 5:39 - Subtitle style preview
- 8:55 - Demo
- 10:20 - Next steps
资源
-
搜索此视频…
你好 我是James 我是AVFoundation团队的工程师 我热爱旅行 今天 我将带你探索 两个与字幕相关的功能 人们使用字幕有很多原因 对于失聪或听力障碍的人来说 字幕至关重要 或有其他辅助功能需求的人 他们需要字幕 才能理解内容 有些人通过字幕辅助 理解对话内容 当我无法听到音频时 我会使用字幕 比如在嘈杂的机场 Apple AI生成的字幕 可以实时创建 在设备上本地生成 随媒体播放同步进行 在这个视频中 首先 我将展示Apple AI生成的字幕 在你的App中如何呈现
之后 我将展示 字幕样式预览功能 让用户在播放视频时 自定义字幕样式
接下来 我将展示 媒体资产是如何创作的
媒体创作通常从拍摄开始 并对视频和音频内容进行剪辑 然后 字幕—— 代表音频中语音内容的文字—— 由人工创建 在本视频中 我将这类字幕 称为预制字幕 内容制作者可以 创建多套字幕 每个对应一种特定语言 他们也可以创建 多种音频语言 最终媒体包含视频 音频 和预制字幕 即使内容有多种音频 和字幕语言 也可能没有观众 能看懂的语言版本
用户可以让设备生成字幕 来填补这一空缺 当原始内容没有 他们所需的字幕语言时 这让更多人能够 获取和体验内容
接下来介绍 生成字幕的创建方式 生成字幕有两种使用场景 第一种是从音频生成字幕 源音频输入设备端的 Speech-To-Text模型 然后生成字幕 这称为语音转录 第二种是语言翻译 字幕由其他字幕翻译生成 源字幕 以英语为例 输入设备端翻译模型 生成另一种语言的新字幕 例如意大利语 这称为语言翻译 生成字幕提供额外的语言支持 预制字幕优先显示 且保持不变
好消息是你无需实现任何代码 就能开启生成字幕功能
视频播放时会自动启用 生成字幕适用于多种播放场景 可为HTTP live streaming内容 生成字幕 包括直播 例如电视频道 也包括点播视频 如电影和剧集 包括旅行视频 和体育等直播活动
也支持基于文件的内容 如App内置视频 或已下载的媒体文件
支持多种内容类型 支持专业内容 如电影和剧集 用户创作内容也同样受支持 如iPhone拍摄的视频 和社交媒体视频
现在我将介绍 支持的设备和语言 生成字幕可在多个设备上使用 此表格显示支持的 设备和语言 从iOS和macOS 27开始 可从英语音频生成英语字幕 Apple tvOS和visionOS 27 也支持此功能 此外 多种字幕语言 可在iOS和macOS上 从英语字幕生成 现在你已了解生成字幕 接下来介绍如何 在你的App中呈现它们 在视频播放期间提供 字幕选择界面非常重要 以下是你App的可用选项
这是iOS上的 AVPlayerViewController界面 它完整实现了字幕选择 和播放器控件 你无需做任何额外操作 macOS上的AVPlayerView 提供类似功能 这是 AVLegibleMediaOptionsMenuController 它提供字幕选择控件 并实现相应行为 当你想在现有播放器界面 添加字幕选择UI时 这是个好选择 因为它不提供播放器控件 或者 你可以自定义 媒体选择控件 以匹配App中 其他控件的样式 就像我在自己的App中 创建的那些控件 生成字幕让你App中的内容 更易于访问 更多人能理解和享受内容
现在我将展示另一个字幕功能 让你的App更易用 字幕有助于让内容更易访问 但字幕的呈现方式 同样重要 设置App允许用户选择 和更改字幕样式 已有多年历史 有几种内置样式 用户也可以创建自定义样式 以满足个人需求 我创建了一个自定义样式 名为Bold Yellow 它有黄色文字 并带有额外边框 让我更容易阅读 我可以在设置App中 选择该样式 但这样会更方便 也更易用 在观看视频时 直接更改样式 这正是字幕样式预览 功能的作用
我正在观看视频 并打开了样式菜单 我有与设置App中 相同的可用样式 字幕样式现在可以 直接从菜单更改 即在视频播放时 选择字幕的菜单 不仅如此 还显示样式预览 让选择更便捷 这是我的Bold Yellow样式 在视频中的效果 有几种方式 可在你的App中实现 字幕样式预览功能 首先 这是iOS上的 AVPlayerViewController 它完整实现了字幕样式预览 和播放器控件 macOS上的AVPlayerView 提供类似功能
这是 AVLegibleMediaOptionsMenuController 它提供字幕样式预览控件 并实现相应行为 当你想添加字幕预览时 这是个好选择 用于你现有的播放器界面 接下来 AVPlayerLayer提供 一个显示样式预览的API 我稍后将展示 如何实现它 此外 AVCaptionRenderer 也可提供样式预览 但需要你自行负责渲染 现在介绍 AVPlayerLayer的实现方式 系统中的每种字幕样式 都分配有一个配置文件ID 首先 通过配置文件ID 获取所有样式 用样式名称 填充你的界面
当选择某个样式时 显示样式化预览 新字幕将使用 指定的样式显示 所有现有字幕 将自动隐藏 以免干扰预览效果
将text参数传入nil 此时将显示 本地化的系统文字
使用position参数 避开界面控件 这是相对于预览文字 默认位置的偏移量 再次调用此函数 以显示不同样式 可以按需多次调用
选择完成后停止预览 这将移除预览文字 并恢复当前活跃的所有字幕
设置所选样式 它将应用于 系统上的所有字幕
你可以在App中构建此功能 让用户快速选择字幕 在观看视频时 选择更易阅读的字幕样式 现在 我将同时展示 这两个字幕功能 我在计划一次去意大利的露营之旅 我将观看这段露营视频 来获取灵感 它有英语字幕 但我想要意大利语字幕 这样我可以练习一下意大利语
为了更改语言 我将打开字幕菜单 然后点击"语言" 有多个字幕可供选择 有些是预制的 有些是生成的 生成的选项标有星光符号 以及"已翻译"字样 我将选择意大利语生成字幕
现在我的视频中 有了意大利语字幕
我将更改样式 让它们更易阅读 首先 我将打开字幕菜单 然后选择"样式" 我将尝试Large Text 现有字幕已被 替换为占位消息 以意大利语显示 使用Large Text样式 文字变大了 但让我试试自定义样式
哦 我喜欢这个
我将关闭菜单 字幕现在使用 我的自定义样式了 这次旅行一定会很棒 在我离开之前 以下是你的后续步骤 现在你已了解 生成字幕功能 我鼓励你去探索它 例如 观看一些旅行视频 并开启生成字幕
同时 确保你的App 有字幕选择界面 也要实现字幕样式预览功能 人们很喜欢这个辅助功能 当他们需要更改 字幕样式时 感谢你的观看 我要去赶飞往意大利的飞机了 Ciao ciao
-
-
7:43 - Implement subtitle style preview
// Implement subtitle style preview import AVFoundation import MediaAccessibility func updateProfileList() { subtitleStyleProfileIDs = MACaptionAppearanceCopyProfileIDs() as? [String] ?? [] } func showPreviewStyle(subtitleStyleProfileID: String) { playerLayer.setCaptionPreviewProfileID(subtitleStyleProfileID, position: .zero, text: nil) } func stopPreviewStyle() { playerLayer.stopShowingCaptionPreview() } func setSubtitleStyle(subtitleStyleProfileID: CFString) { MACaptionAppearanceSetActiveProfileID(subtitleStyleProfileID) }
-
-
- 0:00 - Introduction
Why people rely on subtitles for accessibility and comprehension, and what the session covers — how Apple's on-device AI-generated subtitles appear in your app, the subtitle style preview feature, and how media assets are authored.
- 1:10 - Media authoring
An overview of the traditional media authoring process, including how video, audio, and manually created subtitles are combined into the final media package.
- 2:14 - Subtitle generation methods
Discover the two use cases for on-device generated subtitles: speech transcription from source audio, and language translation from existing subtitles.
- 3:03 - Availability and support
The playback scenarios where generated subtitles work automatically — HTTP Live Streaming, video on demand, and file-based content — and the supported devices and languages, including English subtitles and translation into multiple languages.
- 4:31 - Presenting subtitles in your app
Explore options for providing a subtitle selection UI during video playback using AVPlayerViewController, AVPlayerView, and custom controls.
- 5:39 - Subtitle style preview
Explore how to implement a subtitle style preview using AVPlayerLayer and AVCaptionRenderer, allowing users to customize their viewing experience.
- 8:55 - Demo
A walkthrough of both features together — switching a camping video to generated Italian subtitles marked with a sparkle, then customizing the subtitle style for readability.
- 10:20 - Next steps
Review best practices for integrating generated subtitles and style previews into your app to improve accessibility.