處理 Web 內容中的媒體支援問題

在 Web 上處理音訊和影片的呈現和操作,其現實情況是存在多種媒體格式,它們的流行程度和功能各不相同。格式選擇的多樣性對使用者來說是件好事,因為他們可以選擇最適合自己需求的格式。然而,這也存在一個缺點:由於格式眾多,涉及的許可和設計原則也各不相同,每個 Web 瀏覽器開發人員在決定支援哪些媒體檔案型別和編解碼器時,都必須自行其是。

這給 Web 開發人員帶來了一個小但相對容易克服的負擔:當用戶的瀏覽器無法處理特定型別的媒體時,需要妥善處理這種情況。本指南介紹了你可以用來開發滿足媒體需求,同時提供最廣泛相容性體驗的技術。我們將探討後備方案、基礎媒體格式以及錯誤處理實踐,以確保你的內容在儘可能多的情況下都能正常工作。

使用海報幀

海報幀是代表影片內容的靜態影像。這可以是影片的第一幀;然而,在許多情況下,第一幀是空白的,或者只包含公司徽標,或者其他無法讓讀者瞭解影片內容的影像。

一個好的海報幀應該是能夠代表影片內容的,或者即使不是來自影片本身,但包含能夠讓讀者對影片內容有一個有用概念的影像和/或文字。例如,對於一部動作片,海報幀可能是電影最著名場景中的標誌性示例影像。

類似的概念也可以應用於靜態影像;如果你想顯示的影像非常大,並且下載可能需要一些時間(尤其是在裝置或連線速度較慢的情況下),你可以提供一個低解析度或替代版本,在完整質量版本準備好顯示之前顯示它。

我們將探討這兩種情況以及如何實現它們。

影片的海報幀

漸進式影像

影像——無論是使用 <img> 還是 <picture> 嵌入——都不支援類似海報幀的概念。然而,有一些方法可以在影像載入時以低質量顯示它。這需要你使用漸進式格式建立影像,例如漸進式 JPEG 或隔行掃描 PNG

一旦你的影像轉換為漸進式格式,你就可以像往常一樣使用它。

html
<img
  src="/images/staff-photo-huge-progressive.jpg"
  alt="Staff Photo, taken in January of 1972" />

使用漸進式影像時,資料儲存的方式使得瀏覽器能夠儘快渲染影像的低質量表示,然後在載入時——或載入完成後——更新影像以顯示完整質量。

注意:漸進式(或隔行掃描)影像的體積通常比同一影像的非漸進式版本略大。是否採用隔行掃描能夠真正惠及你的使用者,還需要你自己決定。

指定多個源

在 JavaScript 中檢查相容性

HTMLMediaElement.canPlayTypeMediaSource.isTypeSupported()

檢測播放錯誤

使用 CSS 調整呈現

記憶體管理