媒體架構

Derek Herman
Derek Herman

將媒體新增至網頁的方法有很多種。您先前已瞭解如何使用標準 <video> 標記。本文將說明幾個可用的媒體架構 (或程式庫),您可以使用這些架構擴充或取代預設 HTML5 影片播放器的行為。

媒體架構有專屬和開放原始碼的各種版本,其核心是一組 API,可支援各種容器格式和傳輸通訊協定的音訊和/或影片播放功能。優質的架構具有模組化架構,並提供清晰且詳盡的說明文件。理想情況下,您也應該可以輕鬆設定及使用。您可能會問自己:「如果 HTML5 影片播放器已提供大部分功能,那我為什麼要使用架構或程式庫?」這是個好問題,讓我進一步說明。

使用架構的好處

在大多數情況下,如果您需要提供基本網頁以外的內容,就應該使用媒體架構。除非您準備好開發及維護豐富的功能組合 (例如離線播放、串流、分析、子母畫面、預覽縮圖、嵌入和營利功能,例如填充率最佳化、廣告排程或標頭出價),否則建議您將這些複雜功能交給現有解決方案。

這時媒體架構就派上用場。這些架構會提供一組功能,以及可使用這些功能的條件,您必須決定哪個架構適合您的專案。在下一篇文章中,我們將討論如何建構支援離線串流的 PWA,並實作多項複雜功能。劇透警告:這項工作量非常大,而且仍遠未達到可正式發布的解決方案。請使用架構,避免麻煩。

市面上有許多選項可供選擇,本文將著重於 Shaka PlayerJW PlayerVideo.js

Shaka Player

根據說明文件,Google 的 Shaka Player 是用於自適應媒體的開放原始碼 JavaScript 程式庫。這個 API 可在瀏覽器中播放自適應媒體格式 (例如 DASHHLS),不必使用外掛程式。相反地,Shaka Player 會使用開放式網頁標準 MediaSource ExtensionsEncrypted Media Extensions

Shaka Player 也支援使用 IndexedDB 對媒體進行離線儲存和播放。內容可儲存在任何瀏覽器中。授權儲存空間取決於瀏覽器支援。

您可以在 Shaka Player 說明文件網站上找到基本使用方式的操作說明。不過,簡而言之,如要使用 Shaka Player,您必須先建立含有影片或音訊元素的 HTML 頁面。接著,在應用程式的 JavaScript 中安裝 polyfill,並檢查瀏覽器支援情形。一旦瀏覽器確認支援 Shaka Player,指令碼就會建立 Player 物件,用於包裝媒體元素、監聽錯誤,然後載入資訊清單檔案。接著由 Shaka Player 接手。

使用 Shaka 時,您必須自行代管及編碼媒體檔案。建立媒體伺服器並不太複雜,但編碼/轉碼媒體可能會耗時且複雜。您可能會想將這部分工作外包給 ZencoderAmazon Elastic EncoderGoogle Transcoder API 等服務,以便自動執行重複的工作並加快處理速度。

Shaka Player 的優點在於,它還有一個非常棒的工具和媒體封裝 SDK,可用於 DASH 和 HLS 封裝和加密,稱為 Shaka Packager。可為線上串流準備及封裝媒體內容,這項功能在前面的「媒體轉換」和「媒體加密」一節中已說明。

JW Player

如果您想找尋提供代管和編碼/轉碼服務的選項,可以考慮使用 JW Player,但請注意,JW Player 是專屬軟體。也就是說,您無法對平台或路線圖進行太多控管。我們提供免費的基本版,影片會顯示浮水印,以及商業版。

JW Player 支援使用 MPEG-DASH 進行串流 (僅限付費版)、數位版權管理 (DRM) (使用 Vualto)、互動式廣告、介面自訂和嵌入功能。並提供完善的 API 和 SDK 說明文件。不過,如果你只是想以快速且免費的方式代管媒體,嵌入 YouTube 影片通常是最佳的免費選項。

Video.js

根據他們的網站,Video.js 是專為 HTML5 世界而建構的。支援 HTML5 影片和新式串流格式,例如 DASH 和 HLS,以及 YouTube 和 Vimeo。這項功能支援電腦和行動裝置上的影片播放,並可透過 CSS 版面配置在任何地方呈現良好效果。

使用 Video.js 的方法有幾種,但最簡單的方法是使用 Fastly 提供的免費 CDN 版本。如要進一步瞭解如何設定播放器,請參閱「開始使用」頁面。Video.js 是功能強大的影片播放器,而且與 Shaka Player 類似,您也需要代管及編碼影片。不過,兩者在外掛程式系統上有一個差異,您可以在 Video.js 播放器中播放 YouTube 影片,並且可對播放器進行自訂。

其他架構

有許多不同的架構和程式庫可供使用,本文僅略微介紹其中幾項。選擇架構時,請考量專案需要哪些功能,以及您打算如何代管及編碼或轉碼媒體。你需要片頭廣告或其他營利策略嗎?媒體內容是否可離線存取?您的預算是多少?或其他考量因素。進行研究,並向人脈尋求建議。還有許多其他不錯的選項,在做出任何選擇之前,請先花點時間選擇最適合團隊的選項,避免在專案生命週期中產生不必要的技術債或複雜的維護作業。

接下來,您將瞭解我們建構的離線串流 PWA,瞭解如何處理使用 HTML5 影片物件而非架構的解決方案,解決這項作業的繁重負擔。