View in English

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

快捷链接

5 快捷链接

视频

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

更多视频

大多数浏览器和
Developer App 均支持流媒体播放。

  • 简介
  • 转写文稿
  • 代码
  • HLS 插播式广告的新功能

    HLS 插播式广告可以帮助您在广告、其他插播式广告和您的 HLS 流媒体之间实现视频内容的无缝转换。了解如何优化您的广告版位,在使用 HLS 时通过 SNAP-IN/OUT 对插播式广告进行微调,等等。

    资源

      • 高清视频
      • 标清视频

    相关视频

    WWDC22

    • 在同播共享中显示插播式广告和其他广告

    WWDC21

    • 探索 HLS 中的动态前置式贴片广告和插播广告
  • 搜索此视频…

    大家好 我是 Prashant 欢迎来到 WWDC 2021 年 我们推出了 HLS Interstitials 可在您的 HLS 流中 简单地加入广告 和其它插屏 今年 我们新增了 让您更好地优化广告位 同时调整展示方式的功能 来 我们一起看看 HLS Interstitials 有什么新内容吧 在这次讲座中 我们先快速回顾下 HLS Interstitials 是如何运作的 接着 我们来讨论下新增的 广告提示选项 随后 我们来看下您可以如何 调整广告体验 尤其在使用 SNAP 属性的 直播场景中 然后 我们看下 HLS specification 中新增的 一些查询参数 最后 我们来探讨在这些新功能下 AVFoundation APIs 中的 具体改变 但在我们了解新功能前 先快速回顾下 HLS interstitials 有了 HLS Interstitials 广告可以被当作一种独立的资产来处理 它可以被加入到一条编程时间线 不再需要链接非连续的标签 相反 它们可以直接通过 多元播放列表直接引用 这让广告的安排更简单 因为您只需 从您的主要内容指向 多元播放列表即可

    这是典型的媒体播放列表 显示主要内容时间线 假设您要在回放期间 安排两个广告 您想要第一个广告 在回放大约 5 秒后出现 那您只要用 DATE-RANGE 标签 指定广告的开始时间

    而第二个广告在 15 秒时出现 那就在播放列表加入 另一个标签 就这么简单

    也可能您的主要内容里 已经有一些嵌入广告了 您甚至可以通过指定一个 等同于这些内嵌广告时长的 resume offset 来替换这些广告

    此外 HLS interstitials 还可让您 为广告指定导航限制 您甚至可以在直播场景中 安排复位 和其它方面 您可查看 WWDC 2021 的 “Dynamically insert midrolls and prerolls in HLS” 以获得更多信息 虽然您可以顺着内容时间线 安排广告 但今年 我们还新增了 强制将广告放置在 回放开始或结束的属性 因此 我们增加了以下新提示选项 您可指定 CUE 属性 这一属性以下值的其中之一 或组合 PRE 值可以让广告 在主要内容开始前出现 在直播场景中 如果您想在 节目开始前 安排一个优质广告位 这就尤为有用 POST 值指示广告在 主要内容后出现 这在您安排片尾字幕的事件流中 会比较有用 比如实时事件的结尾 ONCE 值可让广告 只出现一次 如果用户再退回到广告之前 则不会再看到该广告 分级屏幕是一个很好的应用 典型的在回放开始时 只播放一次的例子

    这里是一个播放列表的例子 您的广告可以安排为 前贴片广告和后贴片广告 注意前贴片广告仅播放一次 在回放开始大约 10 秒后 我们也安排了一则单次广告

    现在 在直播场景中安排广告 也面临着一系列的挑战 比如 您的对象包装程序 可能只用了一个 clock 函数 来设置播放列表中的 程序日期时间标签 而生成媒体的解码器 是由另一个 clock 函数生成的 现在 这两个 clock 函数 不一定要同步 比如 在这个示例中 片段 0 和片段 100 之间 日期时间标签区别大约是 800 秒

    然而 聚合媒体持续时间与之相比 会略少 因为个别片段持续时间 在 8 秒以下

    在这样的场景中 您的对象包装程序 clock 函数 比解码器的 clock 函数略快 实际广告开始的媒体时间 可能在 slate 中的某处 如果您想从偏移位置 即和这里展示的广告持续时长一样处 开始加入主内容 实际上 结果您是丢失了 跟随 slate 的一些主要内容

    您现在可使用 SNAP 属性 和 OUT 值 在最接近预期广告时间的 段边界上 摆脱主要内容 同样地 用 SNAP 属性和 IN 值 来迅速跳回最接近 广告返回时间的主要内容处 注意 我们希望您仅在 直播场景 使用 SNAP 属性 因为在处理预打包需求内容时 clock 函数偏移是不存在的

    这里是一个直播的播放列表 广告安排有流出和流入 今年 我们也增加了一些咨询参数 可帮助优化广告库存 以及优化会话管理 现在 您在 Ad pod 中 转变成了直播流转 您会很有兴趣知道 ad pod 现在进展到第几步了 因此在剩余的时间里 可以展示您最优价值的存货

    我们添加了 HLS_start_offset 参数 _HLS_start_offset 咨询参数 只提供插页式广告 Asset-list URL 的请求 在直播内容方面 这可向 asset-list 指定偏移 回放在加入直播流时再次响起 对于有需求内容的视频来说 它将会是寻找用插屏广告的 替代位置时 Asset-list列表的偏移地址

    在这一样本中 我们有一个 实时播放列表 有 15 秒广告 在播放列表顶部 安排在 5 秒后开始 这里突出的片段 将会被插页式广告取代 现在在实时加入中 典型的客户是直播边缘背后 大约 3 个目标的时长 此时已经安排好的 15 秒 ad pod 可能播放了 10 秒 这就是 HLS_Start_offset 咨询参数的一部分 现在客户只有 5 秒的 剩余广告时间了 服务器可以构建 asset-list 因此清单上最后 5 秒 就播放了最有价值的广告

    在您的服务器中 您可以能需要一个方法 来在多重请求下 跟踪一些回放的会话 这样您不会一个广告 重复看很多遍 因此 要将广告请求 与主要回放会话连接 我们添加了 HLS_primary_id 查询参数 如果为了特定的回放会话的 所有 http 请求 客户设置回放会话 id 请求 header 然后他们可以将该部分 ID 作为 _HLS_primary_id 查询参数的一部分 到 X-Asset-URI 和 X-Asset-List 请求 不用设置会话 id 请求 header 的顾客 应为每个主要回放会话 创建一个独立的值 将其作为 _HLS_primary_id 查询参数 来使用 不管是主要还是插页式广告资产 您可能调用了 AVFoundation 提供 AVPlayerInterstitialController 和 AVPlayerInterstitialEvent 对象 让您从客户的角度计划广告 现在我们也增加了对提示 和 SNAP 选项的支持 以及 AVPlayerInterstitialEvent 对象 您可以通过 Cue 属性指定 提示选项 不管广告是要 前贴片广告还是后贴片 通过日期范围标签中的 Cue 属性发出播放一次的信号选项 通过 willPlayOnce property 设置为布尔值 选项到 Snap-Out 是通过 alignsStartWithPrimarySegmentBoundary 属性发出信号的 要 Snap-in 您要设置 alignsResumptionWithPrimarySegmentBoundary 属性

    随着 AVPlayerInterstitialEvent 持续增长 我们认为将其从对象创建中 将其属性设置独立开来最好 因此 我们现在 做了 AVPlayerInterstitialEvent 可变对象 您现在可以创建只有 主要项目的对象 以及事件的开始时间 然后 您可以通过 设置相关的属性 指定不同的配置选项 注意一旦事件在控制面板中 设置好 事件对象任何后续变动 都不会反映在控制面板上 由于控制面板已经做了 这些对象的副本 要让改变生效 您要再次在控制面板上 设置事件 总而言之 您现在可以 使用 X-CUE 属性 将广告计划为前贴片 或后贴片广告 您也可以通过设置 X-CUE 为 1 次 强制让广告只播放一次 要管理直播场景中的偏移 您可以使用 X-SNAP 属性 在实时加入期间 要构建您的 asset lists 您可以使用 _HLS_start_offset 查询参数 您可以使用 HLS_primary_id 查询参数 来联系主要回放会话中的 插页式广告请求 您知道如果用 HLS interstitials 来安排广告 AVFoundation 是否会 在 Shareplay 中管理它们 您可查看“Display ads and other interstitials in SharePlay” 以获得更多 关于 SharePlay”的信息 以上是我的全部内容 感谢大家的观看

    • 7:58 - Client schedules an ad pod at 10s into primary asset

      // Client schedules an ad pod at 10s into primary asset
       let player  = AVPlayer( url: movieURL )  // no ads in primary asset
       let controller = AVPlayerInterstitialEventController( primaryPlayer: player )
       let adPodTemplates = [AVPlayerItem( url: ad1URL ), AVPlayerItem( url: ad2URL )]
       let event = AVPlayerInterstitialEvent( primaryItem: player.currentItem,
                                    time: CMTime( seconds: 10, preferredTimescale: 1 ),
                                            )
       event.templateItems = adPodTemplates
       event.identifier = "Ad1"
       event.restrictions = []
       event.resumptionOffset = .zero
       event.playoutLimit = .invalid
       event.cue = .none
       
       controller.events = [event]
       player.currentItem.translatesPlayerInterstitialEvents = true
       let vc = AVPlayerViewController()
       vc.player = player
       player.play()

Developer Footer

  • 视频
  • WWDC22
  • HLS 插播式广告的新功能
  • 打开菜单 关闭菜单
    • 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. 保留所有权利。
    使用条款 隐私政策 协议和准则