WebberUI

Custom Video Player

自訂控制列的影片播放器,播放時控制列自動淡出,支援進度拖曳、音量、全螢幕與鍵盤操作。

這是 WebberUI Pro 元件

上線活動期間免費:註冊或登入後,在上方預覽區按「複製安裝指令」就能直接安裝,不需付費、不用綁信用卡。下方那條指令未登入時會回 401。

怎麼安裝 Pro 元件 →查看方案 →

載入預覽⋯
npx shadcn@latest add "https://webberui.com/r/custom-video-player.json?t=<安裝 token>"

Playground

即時調整 props、程式碼片段同步更新——直接試出你要的樣子再複製。

2400
<CustomVideoPlayer />

安裝

npx shadcn@latest add "https://webberui.com/r/custom-video-player.json?t=<安裝 token>"

或在 components.json 設定 registries 後,改用 @webberui/custom-video-player 安裝。

使用

import { CustomVideoPlayer } from "@/components/ui/custom-video-player";

<CustomVideoPlayer
  src="/videos/demo.mp4"
  poster="/videos/demo-poster.jpg"
  className="w-full max-w-2xl"
/>

自動播放時多數瀏覽器要求同時 muted

<CustomVideoPlayer src="/videos/loop.mp4" autoPlay loop muted />

Props

Prop型別預設值說明
srcstring影片來源網址
posterstring封面圖,播放前顯示
autoPlaybooleanfalse自動播放(通常需搭配 muted
loopbooleanfalse循環播放
mutedbooleanfalse初始是否靜音
hideControlsDelaynumber2400播放中無操作幾毫秒後淡出控制列
autoHidebooleantrue是否啟用控制列自動淡出
aspectRatiostring"16 / 9"容器的 CSS aspect-ratio
labelstring"影片播放器"播放器容器的無障礙標籤
onPlayStateChange(playing: boolean) => void播放狀態改變時的回呼
classNamestring追加到容器的 className

細節

  • 控制列在播放且無操作時淡出並隱藏游標,游標移動、觸控、聚焦或按鍵時立即重現;暫停或播放結束時恆亮。
  • 進度條可點擊定位與拖曳刷動(使用 pointer capture,游標移出播放器仍持續生效)。
  • 內建 duration 修正:遇到 durationInfinity 的串流或 MediaRecorder blob,會自動觸發重新計算,讓進度與時間顯示正確。
  • 音量滑桿平時收合,滑鼠移入或聚焦音量區時展開。

可及性

  • 使用者系統開啟「減少動態效果」時,控制列停用自動淡出並恆亮,過渡動畫時長歸零。
  • 完整鍵盤操作(聚焦播放器後):
    • 空白鍵 / K:播放/暫停
    • / (或 J / L):後退/前進 5 秒
    • / :音量增減
    • Home / End:跳到開頭/結尾
    • M:靜音切換 F:全螢幕切換
  • 進度條為 role="slider",帶 aria-valuemin/max/nowaria-valuetext;各控制鈕皆有 aria-label,靜音與全螢幕鈕以 aria-pressed 反映狀態。

本頁目錄