AMP

amp-audio

实验性
Bento

描述

替换 HTML5 音频标签。

 

所需脚本

<script async custom-element="amp-audio" src="https://cdn.ampproject.org/v0/amp-audio-0.1.js"></script>

用法

使用直接 HTML5 音频文件嵌入的 amp-audio 组件。

amp-audio 组件会在运行时确定的时间加载其 src 属性指定的音频资源。 它的控制方式与标准 HTML5 audio 标签非常相似。 与 AMP 文件中的所有嵌入式外部资源一样,音频是“懒”加载的,仅当 amp-audio 元素在视口中或附近时才加载。

amp-audio 组件最多接受三种类型的 HTML 节点作为子节点

  • source 标签:就像 HTML <audio> 标签一样,您可以添加 <source> 标签子项来指定要播放的不同源媒体文件。
  • 音频开始前的占位符:零个或一个直接子节点可以具有 placeholder 属性。如果存在,此节点及其子节点将形成一个占位符,该占位符将显示而不是音频。单击或点击 amp-audio 容器内的任何位置,会将占位符替换为音频本身。
  • 如果浏览器不支持 HTML5 音频,则作为回退:零个或一个直接子节点可以具有 fallback 属性。如果存在,此节点及其子节点将形成在用户的浏览器不支持 HTML5 音频时显示的内容。

例如

<amp-audio
  width="400"
  height="300"
  src="https://yourhost.com/audios/myaudio.mp3"
>
  <div fallback>
    <p>Your browser doesn’t support HTML5 audio</p>
  </div>
  <source type="audio/mpeg" src="foo.mp3" />
  <source type="audio/ogg" src="foo.ogg" />
</amp-audio>

属性

src

如果不存在 <source> 子项,则为必需。必须为 HTTPS。

preload

如果存在,则在 html <audio> 标签中设置 preload 属性,该属性指定作者是否认为应在页面加载时加载音频文件。

autoplay

如果存在,则该属性意味着音频将在准备就绪后立即开始播放。

loop

如果存在,则音频在到达结尾时会自动循环回开头。

muted

如果存在,则默认情况下将使音频静音。

controlsList

与 HTML5 音频元素的 controlsList 属性相同。仅受某些浏览器支持。有关详细信息,请参见 https://mdn.org.cn/en-US/docs/Web/API/HTMLMediaElement/controlsList

媒体会话属性

amp-audio 实现了 媒体会话 API,使开发人员能够指定有关正在播放的音频文件的更多信息,以便在用户设备的通知中心(以及播放/暂停控件)中显示。

示例

<amp-audio
  width="400"
  height="300"
  src="https://yourhost.com/audios/myaudio.mp3"
  artwork="https://yourhost.com/artworks/artwork.png"
  title="Awesome music"
  artist="Awesome singer"
  album="Amazing album"
>
  <source type="audio/mpeg" src="foo.mp3" />
</amp-audio>

artwork

用作音频艺术品的 PNG/JPG/ICO 图像的 URL。如果不存在,MediaSessionAPI 助手将使用 schema.org 定义中的 image 字段,og:image 或网站的 favicon

artist

(字符串)表示音频的作者。

album

(字符串)表示音频摘自的专辑。

title

(字符串)常用属性的一部分,也可以用作媒体会话通知中显示的音频名称。 如果未提供,MediaSessionAPI 助手将使用 aria-label 属性或回退到页面的标题。

分析

AMP 音频分析收集有关用户如何与 AMP 文档中的音频交互的数据。AMP 音频扩展在其生命周期中发出分析事件。可以使用 audio-* 触发器通过分析配置报告这些事件。现在支持两种分析事件:audio-playaudio-pause

有关 amp-analytics 配置的详细信息,请参见 AMP 分析组件

音频播放触发器 ("on": "audio-play")

当用户单击播放或自动播放开始或恢复时,会触发 audio-play 触发器。使用以下配置来触发此事件的请求。

"triggers": {
  "audioPlay": {
    "on": "audio-play",
    "request": "event",
    "selector": "#audio1"
  }
}

音频暂停触发器 ("on": "audio-pause")

当用户单击暂停、自动播放暂停或音频到达结尾时,会触发 audio-pause 触发器。使用以下配置来触发此事件的请求。

"triggers": {
  "audioPause": {
    "on": "audio-pause",
    "request": "event",
    "selector": "#audio1"
  }
}

验证

有关详细信息,请参见 AMP 验证器规范中的 amp-audio 规则

需要更多帮助?

您已经阅读此文档十几次了,但它实际上并没有涵盖您的所有问题?也许其他人也有同感:在 Stack Overflow 上与他们联系。

转到 Stack Overflow
发现错误或缺少功能?

AMP 项目强烈鼓励您的参与和贡献!我们希望您能成为我们开源社区的持续参与者,但我们也欢迎您为自己特别热衷的问题做出一次性贡献。

转到 GitHub