AMP

amp-audio

實驗性
Bento

說明

取代 HTML5 audio 標記。

 

必要指令碼

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

支援的版面配置

用法

amp-audio 元件與直接 HTML5 音訊檔案嵌入搭配使用。

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://developer.mozilla.org/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 圖片的網址,作為音訊的 artwork。如果不存在,MediaSessionAPI Helper 將使用 schema.org 定義中的 image 欄位、og:image 或網站的 favicon

artist

(字串) 指出音訊的作者。

album

(字串) 指出音訊取自的專輯。

title

(字串) 通用屬性 的一部分,兼作 MediaSession 通知中顯示的音訊名稱。如果未提供,MediaSessionAPI Helper 將使用 aria-label 屬性,或回退到頁面的標題。

分析

AMP 音訊分析會收集使用者與 AMP 文件中音訊互動方式的相關資料。AMP 音訊擴充功能會在生命週期中發出分析事件。這些事件可以使用 audio-* 觸發器透過分析設定進行回報。目前支援 audio-playaudio-pause 這兩個分析事件。

如需 amp-analytics 設定的詳細資訊,請參閱 AMP Analytics 元件

音訊播放觸發器 ("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