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

Griffith 是什么?

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


开源地址及示例

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

CodeSandbox 示例:codesandbox.io/s/74olr5z02…


特性

简洁易用的 UI

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


快捷键支持

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

  • 空格键:进度条处于选中状态时,可控制视频的播放/暂停。如果已经选中某个按钮,则可用于点击该按钮。
  • K: 在播放器中暂停/播放视频。
  • 选中进度条状态下的向左/向右箭头:快进/快退 5 秒钟。
  • J:在播放器中快退 10 秒。
  • L:在播放器中快进 10 秒。
  • 选中进度条状态下的向上/向下箭头:将音量增大/减小 5%。
  • 选中进度条状态下的数字 1 到 9(不是数字小键盘上的数字):跳至视频进度的 10% 到 90%。
  • 选中进度条状态下的数字 0(不是数字小键盘上的 0):跳至视频的开头。
  • F:启用全屏模式。如果已启用全屏模式,则再次按 F 键或按 Esc 键可退出全屏模式。
  • M:切换静音。

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 格式的视频进行流式播放。

  • 预加载策略: Griffith 可以通过 MSE 动态控制视频加载进度,以达到节省视频 CDN 带宽等目地。
  • 动态平滑切换清晰度:Griffith 可以通过 MSE 实现动态平滑切换视频清晰度。


如何使用

React 应用

import Player from 'griffith'

const sources = {
  hd: {
    play_url: 'https://zhstatic.zhihu.com/cfe/griffith/zhihu2018_hd.mp4',
  },
  sd: {
    play_url: 'https://zhstatic.zhihu.com/cfe/griffith/zhihu2018_sd.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: {
      play_url: 'https://zhstatic.zhihu.com/cfe/griffith/zhihu2018_hd.mp4',
    } ,
    sd: {
      play_url: 'https://zhstatic.zhihu.com/cfe/griffith/zhihu2018_sd.mp4',
    },
  }

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

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

  // 销毁视频
  player.dispose()
</script>复制代码


技术细节


结语

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
qt ffmpeg是一款基于Qt框架和FFmpeg库开发的音视频播放器。Qt是一种跨平台的应用程序开发框架,它提供了丰富的图形界面和多媒体功能的支持,使得开发者可以快速开发出功能强大、界面友好的应用程序。而FFmpeg是一种强大的开源多媒体框架,它可以处理音频和视频文件的编码、解码、转码等操作。 在qt ffmpeg音视频播放器中,通过集成Qt框架和FFmpeg库,我们可以实现以下功能:首先,播放各种格式的音频和视频文件,包括常见的MP3、MP4、AVI等格式,同时支持流媒体的播放。其次,提供播放控制功能,如暂停、播放、快进、快退等,使用户可以方便地操作音视频内容。此外,还可以实现音视频文件的截图功能,将当前画面保存为图片文件。 对于开发者而言,使用qt ffmpeg音视频播放器可以大大简化开发流程,因为Qt框架提供了丰富的图形界面组件和多媒体处理功能,开发者无需从零开始编写播放器的各种功能,只需进行简单的集成和配置即可。而FFmpeg库提供了强大的音视频处理能力,可以方便地实现各种编码、解码、转码等操作。 对于用户而言,qt ffmpeg音视频播放器提供了良好的用户体验。通过友好的界面和丰富的功能,用户可以方便地播放各种格式的音视频文件,同时还可以对音视频内容进行自定义设置和调整。因此,qt ffmpeg音视频播放器知乎等社区中也受到了一些开发者和用户的关注和讨论。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值