Skip to content

VideoPlayer 视频播放器

功能完整的视频播放器组件,支持快捷键、画中画、迷你播放器等功能。

在线演示

loading

基础用法

tsx
import { VideoPlayer } from '@peakchao/react-media'

<VideoPlayer
  src="https://example.com/video.mp4"
  poster="https://example.com/poster.jpg"
/>

Props

属性类型默认值说明
srcstring必填视频源 URL
posterstring-封面图 URL
autoplaybooleanfalse自动播放
loopbooleanfalse循环播放
mutedbooleanfalse静音
controlsbooleantrue显示控制栏
widthstring | number'100%'播放器宽度
heightstring | number'auto'播放器高度
primaryColorstring'#6366f1'主题色
darkModebooleanfalse深色模式
playbackRatesnumber[][0.5, 0.75, 1, 1.25, 1.5, 2]播放速度选项
keyboardShortcutsbooleantrue启用键盘快捷键
globalKeyboardShortcutsbooleanfalse全局键盘快捷键
showPiPbooleantrue显示画中画按钮
showSpeedbooleantrue显示播放速度按钮
showFullscreenbooleantrue显示全屏按钮
showThumbnailPreviewbooleantrue显示缩略图预览
touchGesturesbooleantrue启用触摸手势
miniPlayerbooleanfalse启用迷你播放器
miniPlayerPositionstring'bottom-right'迷你播放器位置
backgroundColorstring'transparent'背景色

事件回调

属性类型说明
onPlay() => void播放时触发
onPause() => void暂停时触发
onEnded() => void播放结束时触发
onTimeUpdate(payload: TimeUpdatePayload) => void播放进度更新
onVolumeChange(payload: VolumeChangePayload) => void音量变化
onError(error: MediaError) => void播放错误
onLoadedMetadata(payload: LoadedMetadataPayload) => void元数据加载完成

Ref 方法

tsx
import { useRef } from 'react'
import { VideoPlayer, VideoPlayerRef } from '@peakchao/react-media'

function App() {
  const playerRef = useRef<VideoPlayerRef>(null)

  return (
    <>
      <VideoPlayer ref={playerRef} src="video.mp4" />
      <button onClick={() => playerRef.current?.play()}>播放</button>
      <button onClick={() => playerRef.current?.pause()}>暂停</button>
      <button onClick={() => playerRef.current?.seek(30)}>跳转到 30s</button>
      <button onClick={() => playerRef.current?.setVolume(0.5)}>音量 50%</button>
      <button onClick={() => playerRef.current?.toggleFullscreen()}>全屏</button>
      <button onClick={() => playerRef.current?.togglePiP()}>画中画</button>
    </>
  )
}

键盘快捷键

按键功能
Space播放/暂停
/ 快退/快进 5 秒
/ 音量 ±10%
M静音/取消静音
F切换全屏
Escape退出全屏/画中画

自定义控制按钮

通过 childrencontrolsLeft 属性添加自定义按钮:

tsx
<VideoPlayer
  src="video.mp4"
  controlsLeft={
    <button className="vm-btn" onClick={handleDownload}>
      下载
    </button>
  }
>
  <button className="vm-btn" onClick={handleShare}>
    分享
  </button>
</VideoPlayer>

Released under the MIT License.