【伯樂線上提示】:① 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 | 當瀏覽器載入完後設資料(時間、尺寸、字幕)時發射。 |