Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

reactjs-player

基于 react hooks 的 video 播放组件,结构简单,代码简洁,扩展方便。

react, media, player, video, hls.js, flv.js, react-hooks

readme

ReactjsPlayer

ReactjsPlayer

npm reactjs-player Travis (.org) Coveralls github

基于 react hooks 的 video 播放组件,结构简单,代码简洁,扩展方便。

特点

ReactjsPlayer 遵循 少即是多(Less is more) 的设计原则,具有以下特点:

  • 结构简单:使用 react hooks 做状态管理,将不同的状态拆分到不同的 react custom hooks 中,ReactjsPlayer 中进行组合

  • 扩展方便:扩展时实现对应的 react custom hooks 并在 ReactjsPlayer 中根据条件进行加载

  • 代码简洁:只做播放器内部的状态管理和控制栏显示与控制

  • 理解容易: ReactjsPlayer 事件基于 vidoe 媒体事件 进行扩展,减小理解成本

  • 接口统一:ReactjsPlayerGrindPlayer 封装了统一的状态和方法,并通过 ReactPlayerContext 导出

  • 使用相对复杂:不同于其他的 h5 播放器,ReactjsPlayer 将控制权交给使用者,无法做到一行代码播放所有兼容的格式

Getting started

git clone https://github.com/goblin-laboratory/reactjs-player.git
cd reactjs-player
yarn install
cd packages/reactjs-player/
yarn start
cd packages/reactjs-player-demo/
yarn start

Usage

Demo page: https://goblin-laboratory.github.io/reactjs-player/

npm install reactjs-player --save
# or
yarn add reactjs-player
import React, { Component } from 'react';
import ReactjsPlayer from 'reactjs-player';

const App = () => {
  return <ReactjsPlayer kernel="hlsjs" src="https://video-dev.github.io/streams/x36xhzz/x36xhzz.m3u8" />;
};

常用场景见说明文档:Usage.md

TODO

3.x 版本计划

  1. 使用 TypeScript 重构
  2. 使用 tsdx 负责打包
  3. Jest 自动化测试
  4. storybook

API

见 API 说明文档:API.md

注意事项

  1. reactjs-player positionabsolute , 大小和位置依赖相对于 static 定位以外的第一个父元素,建议将父节点 position 设置为 relative,通过控制父节点的大小和位置来控制 reactjs-player 的布局结果,可以参考 demo 中的实现

  2. GrindPlayer 必须要大于 400x300 才能正常播放,请保证播放区域不小于 400x300,否则画面会出现显示不全的情况

Supported media

  • HLS
  • FLV
  • RTMP

Contributing

非常欢迎你的贡献,你可以通过以下方式和我们一起共建 😃:

  • 通过 Issue 报告 bug 或进行咨询。
  • 提交 Pull Request 。

Licensing

ReactjsPlayer is MIT licensed.

changelog

Changelog

All notable changes to this project will be documented in this file. See standard-version for commit guidelines.

2.4.0 (2023-07-26)

Features

  • 增加 ali rts 播放协议的支持 :new: (44af055)

Bug Fixes

  • 修复 alirts 播放脚本报错问题 :bug: (bad6717)
  • 修复 srs api 地址解析错误问题 :bug: (631cc42)
  • 修复手机端显示异常问题 :bug: (c5cff57)

2.3.3 (2023-06-18)

2.3.2 (2023-06-18)

Bug Fixes

  • 修复 srs api 地址解析错误问题 :bug: (631cc42)

2.3.1 (2023-06-18)

Bug Fixes

  • 修复 alirts 播放脚本报错问题 :bug: (bad6717)

2.3.0 (2023-06-17)

Features

  • 增加 ali rts 播放协议的支持 :new: (44af055)

2.2.0 (2022-04-26)

Features

  • 支持 srs webrtc api 端口非默认的情况 (3a9931d)

2.1.4 (2022-04-18)

Bug Fixes

2.1.3 (2022-04-18)

Bug Fixes

2.1.2 (2022-04-18)

Bug Fixes

2.1.1 (2022-04-18)

2.1.0 (2022-03-21)

Features

  • mute video and resume play after autoplay prevented (8be794a)

2.0.3-alpha.0 (2021-12-07)

2.0.2 (2021-12-07)

Bug Fixes

  • 修改打包脚本,解决 react 项目 lint 提示 import/no-unresolved 错误 (cd04b6d)

2.0.2-alpha.5 (2021-12-07)

2.0.2-alpha.4 (2021-12-07)

2.0.2-alpha.3 (2021-12-07)

2.0.2-alpha.2 (2021-12-07)

2.0.2-alpha.1 (2021-12-07)

2.0.2-alpha.0 (2021-12-07)

Bug Fixes

  • 修复 npm publish 问题 (7436acc)

2.0.1 (2021-12-07)

Bug Fixes

  • 修复 npm publish 问题 (7436acc)

2.0.0 (2021-12-07)

⚠ BREAKING CHANGES

  • 调整代码结构,删除已有代码

Features

  • 优化工具栏自动隐藏逻辑,防止用户操作被中断 (c4c035e)
  • 支持 SRS WebRTC 播放 (f8858e7)

Bug Fixes

  • 修复工具栏背景图片加载失败问题 (4d075ee)
  • 修复开发 kernelMsg propTypes 检查警告 (75067a5)
  • 修复直播时工具栏高度不够导致蒙版显示异常问题 (74ac35e)
  • 增加 url 不合法异常处理 (324a4d1)
  • 调整代码结构,删除已有代码 (07c2a34)

2.0.0-alpha.6 (2021-11-03)

Bug Fixes

  • 增加 url 不合法异常处理 (324a4d1)

2.0.0-alpha.5 (2021-11-03)

Features

  • 支持 SRS WebRTC 播放 (f8858e7)

2.0.0-alpha.4 (2021-10-25)

Bug Fixes

  • 修复直播时工具栏高度不够导致蒙版显示异常问题 (74ac35e)

2.0.0-alpha.2 (2021-10-22)

Bug Fixes

  • 修复工具栏背景图片加载失败问题 (4d075ee)
  • 修复开发 kernelMsg propTypes 检查警告 (75067a5)

2.0.0-alpha.1 (2021-10-18)

⚠ BREAKING CHANGES

  • 调整代码结构,删除已有代码

Features

  • 优化工具栏自动隐藏逻辑,防止用户操作被中断 (c4c035e)
  • 调整代码结构,删除已有代码 (07c2a34)

1.2.1 (2020-10-14)

Note: Version bump only for package reactjs-player-latest

1.2.0 (2020-10-14)

Features

1.1.3 (2020-06-10)

Bug Fixes

  • 修复 IE11 脚本错误 (0128951)

1.1.2 (2020-06-10)

Note: Version bump only for package reactjs-player-next

1.1.1 (2020-06-10)

Bug Fixes

  • 修复 onPlayClick 触发时控制台报错问题 (6b50627)

1.1.0 (2020-06-09)

Bug Fixes

  • 修复异常更新 currentTime 问题 (1a5eebf)
  • 修复录像播放完成后点击播放按钮式异常问题 (c92b91b)
  • 降低 GrindPlayer 日志等级 (70aba4f)

1.1.0-alpha.1 (2020-04-29)

Bug Fixes

Features

1.1.0-alpha.0 (2020-01-16)

Features

1.1.0-alpha.0 (2020-01-16)

Features

Bug Fixes

  • 修复 src 被清除问题 (2347688)

1.0.3 (2020-01-19)

Bug Fixes

  • 暂时删除未通过的单元测试测试项 (cb45ef8)
  • 解决直播时一直显示 loading 问题 (e22805a)

1.0.2 (2020-01-15)

Note: Version bump only for package reactjs-player

1.0.1 (2020-01-09)

Bug Fixes

  • 增加 prevented 状态 (8640aba)
  • 增加 prevented 状态 (15e6456)
  • 解决 publish faild 问题 (c25a1a9)

1.0.0 (2020-01-06)

Features

  • demo 增加 vconsole,方便手机上查看 log (a3eca25)
  • demo 增加 vconsole,方便手机上查看 log (cb744aa)
  • 使用 x5 最新的同层播放 h5-page 代替 x5-playsinline (2359029)
  • 增大进度条拖动操作区域 (2047017)

BREAKING CHANGES

  • 安卓上微信浏览器使用页面内播放代替同层播放
  • 删除 x5playsinline 属性
  • 删除 x5videofullscreen 状态

0.9.1 (2019-10-24)

Bug Fixes

  • 修复 ReactjsPlayer 无法正常切换 kennel 问题 (2eeca58)
  • 修复停止播放后仍然存在更新 state 的问题 (eddb684)
  • 修复时间显示为 5:59:60 的问题 (772c898)

0.9.0 (2019-10-12)

Bug Fixes

  • 修复 destroyPlayer 时判断条件错误导致 hls 未正常销毁问题 (7fa4f81)

Features

  • 只有 src 变化时才重新播放,避免 useEffect 需要比较太多数据,解决 flv 与 hls 相互切换时播放异常 (e291ea2)

0.8.3 (2019-09-06)

Bug Fixes

  • duration 增加 Infinity 校验 (c7ca1b3)
  • 修复 control bar 自动隐藏相关问题 (737fcf2)
  • 手机端 control bar 显示时进度条 handel 强制显示 (c6b07a6)

0.8.2 (2019-09-05)

Bug Fixes

  • 修复直播时可以选择倍速播放问题 (84e127a)
  • 修复直播时鼠标 tooltip 会显示问题 (1e850b0)
  • 校验 duration/currentTime 是否是合法值 (63d247d)
  • 解决拖动时移出进度条鼠标 tooltip 不显示问题 (3b88d57)

0.8.1 (2019-08-27)

Bug Fixes

  • eslint warnings (bc9266d)
  • 使用 淘宝源 重新生成 yarn.lock 文件 (9a8af26)
  • 删除 hls.js/flv.js 依赖,按需加载 (c8beeb1)
  • 调整目录结构,支持自定义 hooks,解决拖动进度时控制栏隐藏问题 (27f257f)

0.8.0 (2019-08-26)

Bug Fixes

  • 解决 demo 页面 css/js 文件加载失败问题 (fec57f0)

Features

  • react-player => reactjs-player (7be8bdb)

0.7.0 (2019-08-26)

Bug Fixes

  • 解决 demo 页面 css/js 文件加载失败问题 (fec57f0)

Features

  • react-player => reactjs-player (7be8bdb)

0.6.3 (2019-08-26)

Note: Version bump only for package reactjs-player

0.6.1-alpha.3 (2019-08-26)

Note: Version bump only for package reactjs-player

0.6.1-alpha.2 (2019-08-26)

Note: Version bump only for package reactjs-player

0.6.1-alpha.1 (2019-08-26)

Note: Version bump only for package reactjs-player

0.6.1-alpha.0 (2019-08-26)

Bug Fixes

  • 触屏设备 tooltipe 不会自动消失 (dfb1c63)

Features

  • 将 react custom hooks 拆分出来,使用 lerna 管理仓库 (89f3adf)
  • 触屏设备支持拖动进度条 (8895741)

0.6.0 (2019-08-21)

Bug Fixes

  • 触屏设备 tooltipe 不会自动消失 (dfb1c63)

Features

  • 触屏设备支持拖动进度条 (8895741)

0.6.0 (2019-08-21)

Bug Fixes

  • 触屏设备 tooltipe 不会自动消失 (dfb1c63)

Features

  • 触屏设备支持拖动进度条 (8895741)