概述
西瓜播放器是一个Web视频播放器类库,它本着一切都是组件化的原则设计了独立可拆卸的 UI 组件。更重要的是它不只是在 UI 层有灵活的表现,在功能上也做了大胆的尝试:摆脱视频加载、缓冲、格式支持对 video 的依赖。尤其是在 mp4 点播上做了较大的努力,让本不支持流式播放的 mp4 能做到分段加载,这就意味着可以做到清晰度无缝切换、加载控制、节省视频流量。同时,它也集成了对 flv、hls、dash 的点播和直播支持。文档
起步
- 安装
$ npm install xgplayer
- 使用
- Step 1:
<div id="vs"></div>
- Step 2:
import Player from 'xgplayer' let player = new Player({ id: 'vs', url: 'https://lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/byted-player-videos/1.0.0/xgplayer-demo.mp4' })
这是最简单的播放器配置方法,基本功能可以跑起来,如果想使用高级功能参考插件一节或者文档。更多配置
插件
西瓜播放器提供了较多的插件,插件分两类:一部分是自启动的,一部分是继承播放器核心类 xgplayer 的。原则上官方提供插件都是自启动的,封装的第三方类库都是继承方式。有些功能插件本身能提供降级方案建议使用自启动方式,否则建议使用继承方式。播放器支持自定义插件,更多内容查看 插件
对于自启动的插件使用方法如下:
import Player from 'xgplayer'
import 'xgplayer-mp4'
let player = new Player({
id: 'video',
url: '//abc.com/test.mp4'
})
xgplayer-mp4
插件就是自启动的,它会自己加载 mp4 视频、解析 mp4 格式,实现自定义加载、缓冲、无缝切换等详情。对于不支持 MSE 的设备自动降级。
Dev
为了方便开发者调试,我们提供了示例视频资源。示例文件较大,可使用 git clone –recurse-submodules -j8 命令完整拉取源码和示例文件;如果你只对源码感兴趣可以使用 git clone 命令仅拉取源码部分。
$ git clone --recurse-submodules -j8 git@github.com:bytedance/xgplayer.git # 或者:git clone git@github.com:bytedance/xgplayer.git
$ cd xgplayer
$ npm install
$ npm run dev
访问 http://localhost:9090/examples/index.html
使用协议
欢迎使用西瓜播放器技术团队提供的开源音视频解决方案!请您仔细阅读以下条款。通过使用西瓜播放器,您表示同意接受以下所有条款。
- 本开源项目中所有代码基于 MIT 许可协议,您默认遵守许可协议中约定的义务。
- 您默认授权我们将您使用西瓜播放器所在业务的Logo放置在本官网展示。 若您有任何问题,请联系我们。
关于
有人会问 video.js、mediaElement.js 等视频播放器已经很强大了,我们为什么还要造轮子?我们就从以下几个方面来聊聊。
背景
字节跳动的视频业务大多数是短视频,早期的时候我们在 video.js 基础上做二次开发。后来发现很多功能达不到我们的要求,比如自定义UI的成本、视频的清晰度无缝切换、视频流量的节省。考虑到当前点播依旧是mp4居多,我们做了个大胆的假设:在播放器端加载视频、解析视频、转换格式,让不支持分段播放的mp4动态支持,这样就无须转换源视频的格式,服务器端也无其他开销。在这个动力下,我们在2017年年底完成了这项开发任务,并与2018年年初测试了稳定性和经济收益。
在这个背景下,我们一次解析了 hls、flv 等视频,这样我们不再简单的依赖第三方的视频库,只有掌握了底层技术才有优化的可能性。在不断攻克 hls、flv 解析的背景下,我们增强了产品体验,比如交互效果、进场动画等。直到最近,我们想完善文档并把播放器源代码开源出来给更多的视频从业者一个参考,我们一起交流学习,共同进步。
愿景
起步视频、布局多媒体,不断挑战一个又一个技术难题。