摘要:知乎視頻播放器開源介紹是什么是一個基于的視頻播放器,目前已在知乎和內使用,并在上開源。對于視頻播放器中常見的首幀時長,緩沖次數等指標,可以通過接收事件來進行打點記錄。結語所有的工作都會在上進行知乎內部使用的也是同一個倉庫。
知乎視頻播放器 Griffith 開源介紹 Griffith 是什么?
Griffith 是一個基于 React 的視頻播放器,目前已在知乎 web 和 mobile web 內使用,并在 GitHub 上開源。
開源地址及示例GitHub 地址:https://github.com/zhihu/grif...
CodeSandbox 示例:https://codesandbox.io/s/74ol...
特性 簡潔易用的 UIGriffith 提供了簡潔易用的播放器 UI。目前知乎網頁端視頻播放器就是使用的 Griffith。
快捷鍵支持Griffith 參考?YouTube?進行了快捷鍵支持,后續還會添加更多的快捷鍵。
空格鍵:進度條處于選中狀態時,可控制視頻的播放/暫停。如果已經選中某個按鈕,則可用于點擊該按鈕。
K: 在播放器中暫停/播放視頻。
選中進度條狀態下的向左/向右箭頭:快進/快退 5 秒鐘。
J:在播放器中快退 10 秒。
L:在播放器中快進 10 秒。
選中進度條狀態下的向上/向下箭頭:將音量增大/減小 5%。
選中進度條狀態下的數字 1 到 9(不是數字小鍵盤上的數字):跳至視頻進度的 10% 到 90%。
選中進度條狀態下的數字 0(不是數字小鍵盤上的 0):跳至視頻的開頭。
F:啟用全屏模式。如果已啟用全屏模式,則再次按 F 鍵或按 Esc 鍵可退出全屏模式。
M:切換靜音。
React-friendlyGriffith 是一個基于 React 開發的 web 視頻播放器。對于 React 應用,可以直接通過組件調用的方式使用。
Griffith 使用?Context API?進行狀態管理。對于 React 應用,可以通過引入 Griffith 的 Context 來實現彈幕等自定義功能。
免構建對于非 React 應用,或者不愿意通過 npm 包安裝的用戶,Griffith 提供 standalone?模式可以免構建工具直接在瀏覽器中使用。
豐富的事件系統Griffith 定義了豐富的事件系統。
對于視頻播放器中常見的首幀時長,緩沖次數等指標,可以通過接收 Griffith 事件來進行打點記錄。
對于一些需要與播放器進行通信的功能,可以通過往 Griffith 發送事件來與播放器進行交互。
流式播放Griffith 使用了?Media Source Extensions??,支持對 mp4 和 m3u8 格式的視頻進行流式播放。
預加載策略: Griffith 可以通過?MSE?動態控制視頻加載進度,以達到節省視頻 CDN 帶寬等目地。
動態平滑切換清晰度:Griffith 可以通過?MSE?實現動態平滑切換視頻清晰度。
如何使用 React 應用import Player from "griffith" const sources = { hd: { play_url: "https://zhstatic.zhihu.com/cfe/griffith/zhihu2018hd.mp4", }, sd: { play_url: "https://zhstatic.zhihu.com/cfe/griffith/zhihu2018sd.mp4", }, } render(standalone 模式)
技術細節
使用?Yarn workspace?和?Lerna?進行多包管理。
使用?rollup?和?webpack?進行打包。
使用?new Context API?進行狀態管理。
使用?CSS-in-JS?方案來管理樣式。
使用?Jest?來進行單元測試編寫。
使用?Prettier?進行代碼格式統一。
使用?hlsjs?來實現流式播放 m3u8 格式視頻。
使用?griffith-mp4?進行 mp4 到 fmp4 格式的轉換并通過 MSE 實現流式播放。
結語Griffith 所有的工作都會在 GitHub 上進行(知乎內部使用的也是同一個倉庫)。如果有任何相關的疑問和 bug,歡迎在 GitHub 提交 issue、PR 幫助 Griffith 變得更好。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/103192.html
閱讀 3268·2021-11-15 11:37
閱讀 1074·2021-11-02 14:45
閱讀 3898·2021-09-04 16:48
閱讀 3575·2019-08-30 15:55
閱讀 753·2019-08-23 17:53
閱讀 999·2019-08-23 17:03
閱讀 2030·2019-08-23 16:43
閱讀 2188·2019-08-23 16:22