AMP

重要事項:此文件不適用於您目前選取的格式 stories (故事)!

amp-video

實驗性
Bento

說明

取代 HTML5 video 標籤。

 

必要指令碼

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

用法

HTML5 video 標籤的替代品;僅適用於直接 HTML5 影片檔案嵌入。

amp-video 元件會在執行階段決定的時間延遲載入其 src 屬性指定的影片資源。您可以像標準 HTML5 <video> 標籤一樣控制 amp-video 元件。

amp-video 元件最多可接受四種獨特的 HTML 節點類型作為子項

  • source 標籤:就像在 HTML <video> 標籤中一樣,您可以新增 <source> 標籤子項以指定要播放的不同來源媒體檔案。
  • track 標籤可在影片中啟用字幕。如果軌跡託管在與文件不同的來源,您必須將 crossorigin 屬性新增至 <amp-video> 標籤。每當影片有旁白或重要的音訊資訊時,請務必為可能聽不到聲音或聲音已關閉的使用者加入字幕。
  • 影片開始前的預留位置
  • 如果瀏覽器不支援 HTML5 影片的備用方案:零或一個直接子節點可以具有 fallback 屬性。如果存在,此節點及其子項會形成在使用者瀏覽器上不支援 HTML5 影片時顯示的內容。

此瀏覽器不支援影片元素。

<amp-video controls
  width="640"
  height="360"
  layout="responsive"
  poster="/static/inline-examples/images/kitten-playing.png">
  <source src="/static/inline-examples/videos/kitten-playing.webm"
    type="video/webm" />
  <source src="/static/inline-examples/videos/kitten-playing.mp4"
    type="video/mp4" />
  <div fallback>
    <p>This browser does not support the video element.</p>
  </div>
</amp-video>
在 Playground 中開啟此程式碼片段

在有效的 AMP 文件之外單獨使用

Bento 讓您在非 AMP 頁面中使用 AMP 元件,而無需完全提交有效的 AMP。您可以採用這些元件並將它們放置在不支援 AMP 的架構和 CMS 的實作中。請參閱我們的指南 在非 AMP 頁面中使用 AMP 元件 以瞭解更多資訊。

互動性和 API 用法

Bento 元件透過其 API 具有高度互動性。在 Bento 獨立使用中,元素的 API 取代了 AMP 動作和事件以及 amp-bind

可以透過在文件中包含以下指令碼標籤來存取 amp-video 元件 API

await customElements.whenDefined('amp-video');
const videoHandle = await video.getApi();
動作

amp-video API 允許您執行以下動作

play() (播放)

播放影片。

videoHandle.play();
pause() (暫停)

暫停影片。

videoHandle.pause();
mute() (靜音)

將影片靜音。

videoHandle.mute();
unmute() (取消靜音)

取消影片靜音。

videoHandle.unmute();
requestFullscreen() (請求全螢幕)

盡可能將影片展開為全螢幕。

videoHandle.requestFullscreen();

屬性

它還公開了以下唯讀屬性

currentTime (number) (目前時間 (數字))

目前的播放時間,以秒為單位。

console.log(videoHandle.currentTime);
duration (number) (持續時間 (數字))

影片的持續時間,以秒為單位,當已知時 (例如,不是直播)。

console.log(videoHandle.duration);
autoplay (boolean) (自動播放 (布林值))

影片是否自動播放。

console.log(videoHandle.autoplay);
controls (boolean) (控制項 (布林值))

影片是否顯示控制項。

console.log(videoHandle.controls);
loop (boolean) (循環 (布林值))

影片是否循環播放。

console.log(videoHandle.loop);

屬性

src (來源)

如果沒有 <source> 子項,則為必要項目。必須為 HTTPS。

poster (海報)

在影片播放開始之前要顯示的影格影像。預設情況下,會顯示第一個影格。

或者,您可以呈現點擊播放覆蓋層。

autoplay (自動播放)

如果存在此屬性,且瀏覽器支援自動播放,則影片會在可見時立即自動播放。元件需要符合一些播放條件,在 AMP 規格中的影片中概述了這些條件

controls (控制項)

此屬性與 HTML5 video 中的 controls 屬性類似。如果存在此屬性,則瀏覽器會提供控制項,讓使用者可以控制影片播放。

controlsList (控制項列表)

與 HTML5 影片元素的 controlsList 屬性相同。僅某些瀏覽器支援。

loop (循環)

如果存在,影片將在到達結尾時自動循環回到開始處。

crossorigin (跨來源)

如果 track 資源託管在與文件不同的來源,則為必要項目。

disableremoteplayback (停用遠端播放)

決定是否允許媒體元素具有遠端播放 UI,例如 Chromecast 或 AirPlay。

muted (deprecated) (已停用靜音)

muted 屬性已停用且不再具有任何效果。autoplay 屬性會自動控制靜音行為。

noaudio (無音訊)

將影片註解為沒有音訊。這具有以下效果

  • 當設定 autoplay 時,將不會繪製等化器圖示。

  • 包含此影片的 <amp-story>不會繪製不必要的靜音按鈕。

rotate-to-fullscreen (旋轉至全螢幕)

如果影片可見,則在使用者將裝置旋轉為橫向模式後,影片會全螢幕顯示。如需更多詳細資訊,請參閱 AMP 規格中的影片

此屬性可以根據 媒體查詢 進行設定。

通用屬性

此元素包含擴充至 AMP 元件的 通用屬性

Media Session API 屬性 (媒體工作階段 API 屬性)

amp-video 元件實作了 Media Session API (媒體工作階段 API),讓開發人員可以指定更多關於影片檔案的資訊。影片的其他資訊會顯示在使用者裝置的通知中心 (以及播放/暫停控制項)。

此範例同時包含 posterartwork 屬性。poster 在影片播放前作為預留位置影像,而 artwork 是透過 MediaSession API 顯示在通知中的影像。

<amp-video
  width="720"
  height="305"
  layout="responsive"
  src="https://yourhost.com/videos/myvideo.mp4"
  poster="https://yourhost.com/posters/poster.png"
  artwork="https://yourhost.com/artworks/artwork.png"
  title="Awesome video"
  artist="Awesome artist"
  album="Amazing album"
>
</amp-video>

artwork (美術設計)

指定 PNG/JPG/ICO 影像的 URL,作為影片的美術設計。如果沒有 artwork,Media Session API 輔助程式會使用 schema.org 定義中的 image 欄位、og:image 或網站的 favicon

artist (演出者)

指出影片檔案的作者,指定為字串。

album (專輯)

指出影片所取自的專輯/合輯,指定為字串。

title (標題)

指出影片的名稱/標題,指定為字串。如果未提供,Media Session API 輔助程式會使用 aria-label 屬性或回復為頁面的標題。

分析

amp-video 支援開箱即用的分析功能。請參閱 影片分析 以瞭解更多資訊。

樣式

點擊播放覆蓋層

提供點擊播放覆蓋層是網路上影片播放器常見的 UX 功能。例如,您可以顯示使用者可以點擊的自訂播放圖示,以及包含影片標題、不同尺寸的海報影像等等。由於 amp-video 元件支援標準 play AMP 動作,因此您可以輕鬆實作點擊播放。

需要更多協助嗎?

您已經閱讀這份文件十幾次,但它仍然沒有涵蓋您的所有問題嗎?也許其他人也有相同的感受:在 Stack Overflow 上與他們聯繫。

前往 Stack Overflow
發現錯誤或缺少功能?

AMP 專案強烈鼓勵您的參與和貢獻!我們希望您能成為我們開放原始碼社群的長期參與者,但我們也歡迎針對您特別熱衷的問題的一次性貢獻。

前往 GitHub