谷歌 Web 開發最佳實踐手冊(2.2.6):視訊元素快速參考

Mxt發表於2014-05-28

【伯樂線上提示】:① 5月6日,谷歌開發者中心推出了一個 Web 開發最佳實踐手冊。伯樂線上資源頻道摘編該資源後,已邀請一些關注 Web 開發的朋友參與翻譯手冊。② 由於譯者朋友幾乎都是已在職,都是在工作之餘參與,每位的翻譯進度會不一樣(請理解),所以手冊中文版不會按照英文版章節順序釋出。③ 手冊中文版尚不完整,請不要轉載,謝謝合作。


【導讀】簡要概述了視訊元素上的屬性。

在本課程中:
1. 視訊元素屬性
2. JavaScript

視訊元素屬性

要檢視完整的視訊元素屬性和定義,參閱視訊元素規範

屬性 有效性 描述
src 所有瀏覽器 視訊的地址(URL)
poster 所有瀏覽器 視訊封面地址(URL),視訊元素載入之後即刻顯示,無需下載視訊內容。
preload 所有移動裝置瀏覽器都忽略此屬性 在視訊播放之前提示瀏覽器預載入後設資料(或部分視訊)是值得的。屬性的取值有 none 、 metadata 或 auto (詳情請參閱下面預載入部分)。
autoplay iPhone 與 Android 不支援,所有桌面瀏覽器、iPad、火狐和 Opera for Android 支援 儘早開始下載和播放。(參閱下面自動播放部分)。
loop 所有瀏覽器 迴圈播放視訊。
controls 所有瀏覽器 顯示預設的視訊控制(播放、暫停、等等)。

 

自動播放(Autoplay)

對於桌面版,autoplay 告訴瀏覽器儘可能早的開始下載和播放。在 iOS 和 Chrome for Android 上,autoplay 是無效的,使用者必須點選螢幕去播放視訊。

即使在支援自動播放的平臺上,你也要考慮啟用它是不是一個好主意:

  • 資料流量有可能是昂貴的。
  • 不經詢問,一開始就下載和播放會不經意的佔用頻寬和 CPU,延遲了頁面的渲染。
  • 使用者所處的環境可能不適合播放視訊和音訊。

自動播放行為可以在 Android 網路檢視(WebView)通過 WebSettings API 配置。它預設是 true 但一個網路檢視應用程式可以選擇禁用它。

 

預載入(Preload)

preload 屬性提示瀏覽器應該預載入多少資訊和內容。

描述
none 使用者可能不看這個視訊,不要預載入任何東西。
metadata 預載入後設資料(時長、尺寸、字幕軌)以及最小限度的視訊。
auto 允許馬上下載整個視訊。

preload 屬性在不同的平臺上有不同的效果。比如,Chrome 的桌面版會緩衝25秒的視訊,但 iOS 與 Android 版則不會。這意味著在移動版上會出現桌面版所沒有的播放啟動延遲。詳情參閱 Steve Souders’ test page

 

JavaScript

The HTML5 Rocks Video article 很好的總結了控制視訊播放的 JavaScript 屬性、方法和事件。我們這裡已經包括了這些內容,並更新了與移動方面相關的一些內容。

 

屬性(Properties)

屬性 描述
currentTime 以秒為單位獲取或設定播放位置。
volume 獲取或設定視訊當前的音量。
muted 獲取或設定音訊靜音狀態。
playbackRate 獲取或設定播放速率;1 為正常速率正向播放。
buffered 有關視訊已緩衝多少,是否準備好播放的資訊。參閱樣例
currentSrc 正在播放的視訊的地址。
videoWidth 視訊的寬度,以畫素為單位(與視訊元素的 width 不同)。
videoHeight 視訊的高度,以畫素為單位(與視訊元素的 height 不同)。

移動裝置不支援 playbackRate(樣例)和 volume 。

 

方法(Methods)

方法 描述
load() 載入或重新載入視訊源而不啟動播放(比如用 JavaScript 改變視訊的 src 的時候)。
play() 在當前進度開始播放視訊。
pause() 在當前進度暫停視訊。
canPlayType(‘format’) 找出支援哪些格式(參閱檢查支援哪些格式)。

在移動裝置上(除了 Opera 和 Android)play() 和 pause() 只有在響應使用者動作的時候才有效,比如點選一個按鈕(參閱樣例)。同樣地,對於嵌入 YouTube 視訊之類的內容也不能啟動播放。

 

事件(Events)

這只是可能發射的媒體事件的一個子集。完整的列表請參閱 Mozilla 開發者社群上的媒體事件頁面。

事件 描述
canplaythrough 當足夠的資料可用,瀏覽器認為視訊可以不中斷播放完畢時發射。
ended 視訊播放完畢時發射。
error 錯誤發生時發射。
playing 當視訊第一次開始播放、按下暫停之後或者重新開始時發射。
progress 週期性地發射,顯示下載進度。
waiting 當一個動作被延遲,在等待另一個動作完成時發射。
loadedmetadata 當瀏覽器載入完後設資料(時間、尺寸、字幕)時發射。

相關文章