第一期(基本功能): ✔ hls.js @done(19-06-11 08:54) ✔ flv.js @done(19-06-11 08:55) ✔ GrandPlayer(浏览器兼容) @done(19-06-11 08:55) ✔ Native Player(ios/安卓浏览器支持) @done(19-06-11 08:55) ✔ 暂停/恢复 @done(19-05-22 17:04) ✔ 回放结束后重新播放 @done(19-05-22 17:04) ✔ loading @done(19-05-22 17:04) ✔ seek @done(19-05-22 17:04) ✔ 直播回放区分显示进度条 @done(19-06-11 08:54) ✔ 音量/静音 @done(19-05-22 17:04) ✔ 画中画 @done(19-05-22 17:04) ✔ 播放速度 @done(19-05-22 17:04) ✔ 全屏 @done(19-05-22 17:04) ✔ hlsjs errMsg显示 @done(19-06-11 08:53) ✔ flvjs errMsg显示 @done(19-06-11 08:53) ✔ 使用 custom hooks 优化代码 @done(19-06-11 08:54) ✔ 支持 hlsjs options @done(19-06-11 08:54) ✔ 支持 flvjs options @done(19-06-11 08:54) ✔ 测试页面 @done(19-06-16 13:38) ✔ gh-pages 发布测试页面 @done(19-06-16 13:38) ✔ rtmp 支持 @done(19-06-11 08:54) ✔ native 播放 @done(19-06-11 08:54) ✔ 微信同层播放 @done(19-06-17 14:49) ✔ ios 微信同层播放 @done(19-06-16 13:47) ✔ 回放进度条鼠标位置时间提示 @done(19-07-09 11:38) 构建优化: ✘ 大小优化 @cancelled(19-06-16 13:38) ✔ 打包方式优化 @done(19-06-16 13:38) ✔ npm 发布 @done(19-06-16 13:38) ✔ 文档 @done(19-07-09 11:32) ✔ commitlint @done(19-07-15 11:23) ✔ changelog @done(19-08-21 15:01) ✔ 单元测试配置 @done(19-07-09 11:38) ✔ 测试覆盖率统计 @done(19-07-09 14:31) ✔ travis-ci 持续集成 @done(19-07-09 14:31) ☐ 发布版本代码 uglify: rollup-plugin-terser ☐ rollup-plugin-clear 0.5.x: ✔ 拆分 hooks 便于维护和测试 @done(19-07-13 16:13) ✔ 完善单元测试,提升测试覆盖率 @done(19-07-13 16:28) ✘ 去除 antd 依赖: 音量 slider, Icon button, dropdown @cancelled(19-07-11 09:35) ✔ playerMsg => kernelMsg @done(19-07-11 14:30) ✔ ref Methods 支持 @done(19-07-15 11:15) ✔ onX5VideoFullscreenChange => onFullscreenChange @done(19-07-15 11:15) ✔ CurrentTimeSilder => components/TimeSilder @done(19-07-15 10:08) ✔ videoProps 支持 @done(19-07-15 11:16) ✔ playerProps 支持 @done(19-07-15 11:15) ✔ className @done(19-07-15 11:15) ✔ IE 11 全屏/退出全屏 @done(19-07-19 18:34) ✔ PC 版微信 全屏/退出全屏 @done(19-07-19 18:34) ✔ ref 支持 getDuration Method @done(19-07-23 17:47) ✔ ref 支持 getVolume Method @done(19-07-25 17:49) ✔ ref 支持 setVolume Method @done(19-07-25 17:49) ✔ ref 支持 isMuted Method @done(19-07-25 17:49) ✔ ref 支持 toggleMute Method @done(19-07-25 17:49) ✔ ReactPlayerContext 支持 getVideoElement @done(19-08-07 16:29) ✔ useFlvjs src 变化时 kenerMsg 销毁 @done(19-08-07 16:29) ✔ useFlvjs change src 时异常 @done(19-08-07 18:08) ✘ 直播暂停恢复时自动跳转到最新 @cancelled(19-08-17 16:04) ✔ 直播 duration 使用实际 duration,不要强制设置成 -1 @done(19-08-16 17:54) ✔ seek 时回跳问题 @done(19-08-16 17:33) ✔ Skin 在白色视频中看不清楚 @done(19-08-16 16:36) ✔ iOS 点击后皮肤不显示问题 @done(19-08-13 16:44) ✔ 兼容触屏设备 @done(19-08-21 14:48) ✔ 手机端 tooltipe 不会自动隐藏 @done(19-08-21 11:12) ✔ 手机页面跳转时销毁资源 @done(19-08-13 16:41) ✔ iOS 全屏异常 @done(19-08-13 16:41) 性能优化: ✔ timeupdate 事件优化 @done(19-07-26 15:45) ✔ progress 事件优化 @done(19-07-26 16:28) ✔ TimeSlider tooltip 事件优化 @done(19-07-26 16:29) ✔ TimeSlider Slider MouseMove 事件优化 @done(19-07-27 18:25) ✔ autohide setTimeout 优化 @done(19-07-26 18:25) example 配套修改: ✔ onFullscreenChange @done(19-07-15 18:39) ✔ 同层播放 @done(19-07-15 18:39) ✔ videoProps( playsInline, objectPosition, x5-playsinline ... ) @done(19-07-15 18:39) ✔ 直播 duration 使用实际 duration,不要强制设置成 -1 @done(19-08-22 09:55) ✔ 布局调整:电脑端上左右,手机端上中下布局 @done(19-07-18 17:22) ref Methods 测试: ✔ isPlaying @done(19-07-23 17:38) ✔ getDuration @done(19-07-23 18:37) ✔ getCurrentTime @done(19-07-23 17:38) ✔ setCurrentTime @done(19-07-25 17:47) ✔ getBuffered @done(19-07-25 17:47) ✔ getVolume @done(19-07-25 17:48) ✔ setVolume @done(19-07-25 17:48) ✔ isMuted @done(19-07-25 17:48) ✔ toggleMute @done(19-07-25 17:48) ✔ getPlaybackRate @done(19-07-25 17:47) ✔ setPlaybackRate @done(19-07-25 17:47) ✔ isPiP @done(19-07-25 17:47) ✔ isFullscreen @done(19-07-25 17:47) 销毁资源: 安卓关闭页面: ✔ unload @done(19-08-13 14:58) ✔ pagehide @done(19-08-13 15:00) ✘ beforeunload @cancelled(19-08-13 15:00) ✘ useEffect @cancelled(19-08-13 15:01) 安卓跳转前进: ✔ unload @done(19-08-13 15:03) ✔ pagehide @done(19-08-13 15:04) ✔ beforeunload @done(19-08-13 15:05) ✘ useEffect @cancelled(19-08-13 15:06) 安卓返回: ✔ unload @done(19-08-13 15:38) ✔ pagehide @done(19-08-13 15:41) ✔ beforeunload @done(19-08-13 15:41) ✘ useEffect @cancelled(19-08-13 15:41) iOS 关闭页面: ✔ unload @done(19-08-13 15:55) ✔ pagehide @done(19-08-13 15:55) ✘ beforeunload @cancelled(19-08-13 15:58) ✘ useEffect @cancelled(19-08-13 15:58) iOS 跳转前进: ✘ unload @cancelled(19-08-13 15:58) ✘ pagehide @cancelled(19-08-13 15:58) ✘ beforeunload @cancelled(19-08-13 15:58) ✘ useEffect @cancelled(19-08-13 15:58) iOS 返回: ✘ unload @cancelled(19-08-13 15:59) ✘ pagehide @cancelled(19-08-13 15:59) ✘ beforeunload @cancelled(19-08-13 15:59) ✘ useEffect @cancelled(19-08-13 15:59) 0.8.x: ✔ flv.js/hls.js 按需加载 @done(19-08-27 12:23) ✔ 支持第三方扩展 hooks @done(19-08-27 14:30) ✔ 进度拖动时 controls 不要自动隐藏 @done(19-08-27 14:42) ✔ controls bar 隐藏动画时点击不要 seek @done(19-09-06 15:28) ✔ 倍速切换时强制显示 controls bar @done(19-09-06 15:28) ☐ 手机端 controls 不会自动隐藏问题 ✔ 手机端 controls 显示时 process 的 handel 强制显示 @done(19-09-06 16:09) 单元测试: ☐ useFlvjs ☐ useHlsjs ☐ useNative ✔ useVideoState @done(19-07-13 16:26) ✔ useVideoTime @done(19-07-13 16:26) ✔ useVideoVolume @done(19-07-13 16:26) ✔ useVideoPlaybackRate @done(19-07-13 16:26) ✔ useVideoPiP @done(19-07-13 16:26) ✔ useVideoFullscreen @done(19-07-13 16:26) ☐ ReactPlayer ☐ GrindPlayer ☐ ReactPlayerSkin ☐ TimeSilder 待规划: ☐ 使用 gloabl 样式,支持使用者覆盖默认样式 ☐ useVideoPiP: 不支持 PiP 时 request / exit 被调用 ☐ useVideoTime: 未开始播放时 change current time ☐ useVideoFullscreen: 未开始播放时 request / exit 被调用 ☐ live 时 setPlaybackRate ☐ TypeScript ☐ 性能优化(mouse move 防抖节流) ☐ 去除 antd 依赖: 音量 slider, Icon button, dropdown 问题记录: ✘ 同层播放时 player 的 position 必须设置为 static 标题栏才能正常显示 @cancelled(19-06-19 11:06) ☐ 华为手机同层播放时蒙板问题 ☐ hls.js 本地测试 enableWorker 为 true 时报错