知乎视频播放器 Griffith 开源了~

2019-04-03 19:30:45 +08:00
 xiaoyuhen

知乎视频播放器 Griffith 开源介绍

Griffith 是什么?

Griffith 是一个基于 React 的视频播放器,目前已在知乎 web 和 mobile web 内使用,并在 GitHub 上开源。

开源地址及示例

GitHub 地址: https://github.com/zhihu/griffith

CodeSandbox 示例: https://codesandbox.io/s/74olr5z02x

特性

简洁易用的 UI

Griffith 提供了简洁易用的播放器 UI。目前知乎网页端视频播放器就是使用的 Griffith。

快捷键支持

Griffith 参考 YouTube 进行了快捷键支持,后续还会添加更多的快捷键。

React-friendly

Griffith 是一个基于 React 开发的 web 视频播放器。对于 React 应用,可以直接通过组件调用的方式使用。

Griffith 使用 Context API 进行状态管理。对于 React 应用,可以通过引入 Griffith 的 Context 来实现弹幕等自定义功能。

免构建

对于非 React 应用,或者不愿意通过 npm 包安装的用户,Griffith 提供 standalone 模式可以免构建工具直接在浏览器中使用。

丰富的事件系统

Griffith 定义了丰富的事件系统。

对于视频播放器中常见的首帧时长,缓冲次数等指标,可以通过接收 Griffith 事件来进行打点记录。

对于一些需要与播放器进行通信的功能,可以通过往 Griffith 发送事件来与播放器进行交互。

流式播放

Griffith 使用了 Media Source Extensions™ ,支持对 mp4 和 m3u8 格式的视频进行流式播放。

如何使用

###React 应用

import Player from 'griffith'

const sources = {
  hd: {
    playurl: 'https://zhstatic.zhihu.com/cfe/griffith/zhihu2018hd.mp4',
  },
  sd: {
    playurl: 'https://zhstatic.zhihu.com/cfe/griffith/zhihu2018sd.mp4',
  },
}

render(<Player sources={sources} />)

standalone 模式

<div id="player"></div>
<script src="https://unpkg.com/griffith-standalone/dist/index.umd.min.js"></script>
<script>
  const target = document.getElementById('player')

  const sources = {
    hd: {
      playurl: 'https://zhstatic.zhihu.com/cfe/griffith/zhihu2018hd.mp4',
    } ,
    sd: {
      playurl: 'https://zhstatic.zhihu.com/cfe/griffith/zhihu2018sd.mp4',
    },
  }

  // 创建播放器
  const player = Griffith.createPlayer(target)

  // 载入视频
  player.render({sources})

  // 销毁视频
  player.dispose()
</script>

技术细节

结语

Griffith 所有的工作都会在 GitHub 上进行(知乎内部使用的也是同一个仓库)。如果有任何相关的疑问和 bug,欢迎在 GitHub 提交 issue、PR 帮助 Griffith 变得更好。

10597 次点击
所在节点    JavaScript
51 条回复
alvin666
2019-04-03 19:37:52 +08:00
知乎播放器做的这么垃圾还来开源...
不知道怎么回事每次 APP 和网页里面的视频加载很慢,然而把链接( i.vzuu.com )拿出来 Chrome 直接就能播,服了
SimonOne
2019-04-03 19:54:40 +08:00
想看看知乎视频加载只要失败就一直失败,除非强行停止再打开才能重新加载。是怎么实现的
FrankFang128
2019-04-03 19:57:50 +08:00
知乎的前端水平……
leeUp
2019-04-03 19:58:53 +08:00
我觉得微博的很好用 ios 下还可以拖拽退出
misaka19000
2019-04-03 20:01:45 +08:00
知乎的视频播放是真的垃圾,很多时候根本没办法正常使用。gif 图片播放也是一样,经常点击了然后就卡死
xeaglex
2019-04-03 20:06:43 +08:00
知乎视频播放器在 Firefox 下基本没有兼容性可言。。
hanqian
2019-04-03 20:12:52 +08:00
知乎的视频播放器 LMAO
hasaki1997
2019-04-03 20:19:42 +08:00
知乎安卓端的播放器,我印象中打开十次就有五次播放失败
chengfeng
2019-04-03 20:25:15 +08:00
app 上的播放器,宇宙最烂,没有之一
mamahaha
2019-04-03 20:40:30 +08:00
用开源的东西做出来的,不开源又能怎样。
wxsm
2019-04-03 20:43:50 +08:00
em.... 看了一下貌似没什么亮点,我选择 videojs
Les1ie
2019-04-03 20:44:23 +08:00
还没点进来我就知道帖子回复会是什么样子的了 hhhh

我也在想知道为什么即使百兆网络,在网页知乎里面点开视频也可以那么卡..
andy12530
2019-04-03 20:49:40 +08:00
看到这么多人骂,我就放心了
billlee
2019-04-03 22:04:20 +08:00
日常崩溃
yangsimonguo
2019-04-03 22:10:54 +08:00
喜闻乐见的刷 25 分钟至乎后台 3.1K 个错误
Nicoco
2019-04-03 23:39:15 +08:00
移动端自定义 UI 会被实际环境打脸的,比如 X5 浏览器内核、比如 OPPO 浏览器、小米浏览器…… 这些劫持原生 video 标签,让你哭。

当然,还是非常鼓励知乎这样的开源技术行为,为你的勇气鼓掌!
malusama
2019-04-04 00:29:54 +08:00
知乎的视频体验糟糕的要死
suxiaoxiann
2019-04-04 01:28:38 +08:00
知乎播放器真的垃圾
strpbrk
2019-04-04 06:30:27 +08:00
刷存在
KuzhiBake
2019-04-04 07:14:52 +08:00
这么影响用户体验的东西也好意思拿出来

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/551792

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX