4 Star 5 Fork 3

奇虎360 / chimee

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

chimee

Build Status Coverage Status npm dependency Status devDependency Status

English | 中文

Introduction

Chimee is a web video player created by Qiwoo Team. It's based on the web video element. It support multiple media streams, including mp4, m3u8, flv etc.

In most situation, we need to support complex function based on video, such as barrage, advertising. It's hard to maintain them if you we just write it based on video. So we may need to have a frame to sort out the logic and handle the communication. So Chimee offer you a plugin system, so that you can splitt your complex function into multiple plugins. Through this reform of development, developers can decouple logic, to achieve gray-scale release and other functions.

Chimee help developer to achieve video scenes easier and quicker.

Feature

Chimee is a web video player

  1. It support multiple video stream including mp4, m3u8, flv etc
  2. It solve most of the compatibility issues including fullscreen, autoplay, inline playing etc.

What's more, it's also a component framework based on video element.

  1. It help us to split complex function into multiple plugins.
  2. For each plugin, they can operate the video element directly and easily.
  3. It will sort out the hierarchical relationship between plugins, which will keep us free from z-index problem.
  4. It provides a variety of modules such as transparent plugin, penetrating plugin, inner plugin and outer plugins, which can cover most of the interative scenerios.
  5. It offer us convinient ways to communicate between plugins.
  6. It allow us to define high priority plugin, which is useful in making advertising plugin.
  7. It also support async plugin.

Installation

npm

npm install --save chimee

cdn

TODO: will offer when we publish chimee

Usage

You can use chimee directly.

Assume you have a div whose id is wrapper.

<body>
  <div id="wrapper">
  </div>
</body>

Then you can setup Chimee on it.

import Chimee from 'chimee';
const chimee = new Chimee('#wrapper');
chimee.on('play', () => console.log('play!!'));
chimee.load('http://cdn.toxicjohann.com/lostStar.mp4');
chimee.play(); // play!!

Sometimes we need to custom more, we can pass in an object.

import Chimee from 'chimee';
const chimee = new Chimee({
  wrapper: '#wrapper',
  src: 'http://cdn.toxicjohann.com/lostStar.mp4',
  controls: true,
  autoplay: true,
  events: {
    play () {
      console.log('play!!');
    }
  }
});
// play!!

If you need to play video in flv or hls. You should add preset.

import Chimee from 'chimee';
import flv from 'chimee-kernel-flv';
import hls from 'chimee-kernel-hls';
const chimee = new Chimee({
  wrapper: '#wrapper',
  src: 'http://cdn.toxicjohann.com/lostStar.mp4',
  controls: true,
  autoplay: true,
  preset: {
    flv,
    hls
  }
});
chimee.play();

If you want to know more about chimee, please click here.

What's more, if you use chimes directly, it's better to add this style in your page.

container {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
}
video {
  width: 100%;
  height: 100%;
  display: block;
  background-color: #000;
}
video:focus,
video:active {
  outline: none;
}

Chimee will use the original skin of browser if you do not use any plugin. You may want to try our UI plugin.

import ui from 'chimee-plugin-ui';
import Chimee from 'chimee';
Chimee.install(ui);
const chimee = new Chimee({
  wrapper: '#wrapper',
  src: 'http://cdn.toxicjohann.com/lostStar.mp4',
  plugin: [ui.name],
  controls: false,
  autoplay: true
});

If you want to know more about Chimee's plugin, please click here.

If you don't want to care too much. And just need a useful video player. You can install chimes-player, which contain base ui and logger.

import ChimeePlayer from 'chimee-player';

const chimee = new ChimeePlayer({
  wrapper: '#wrapper',
  src: 'http://cdn.toxicjohann.com/lostStar.mp4',
  controls: false,
  autoplay: true
});

Documentation

coming soon~

  1. What is Chimee?
  2. What is Chimee's plugin?
  3. How to write a plugin?
  4. How to write an advertising plugin?
  5. How to write a ui plugin?

Explanation of Different Build

You will find four differnet build in the lib.

Name Kind Meaning Need to define environment
index.js commonjs Common js, mostly used in Webpack 1. Yes
index.mjs esmodule in es module, mostly used in webpack 2 and rollup Yes
index.browser.js umd Can be used in browser directly No(It's in development)
index.min.js umd Can be used in browser directly No(It's in production)

Development vs. Production

Development/production modes are hard-coded for the UMD builds: the un-minified files are for development, and the minified files are for production.

CommonJS and ES Module builds are intended for bundlers, therefore we don’t provide minified versions for them. You will be responsible for minifying the final bundle yourself.

CommonJS and ES Module builds also preserve raw checks for process.env.NODE_ENV to determine the mode they should run in. You should use appropriate bundler configurations to replace these environment variables in order to control which mode Vue will run in. Replacing process.env.NODE_ENV with string literals also allows minifiers like UglifyJS to completely drop the development-only code blocks, reducing final file size.

Webpack

Use Webpack’s DefinePlugin:

var webpack = require('webpack')

module.exports = {
  // ...
  plugins: [
    // ...
    new webpack.DefinePlugin({
      'process.env': {
        NODE_ENV: JSON.stringify('production')
      }
    })
  ]
}

Rollup

Use rollup-plugin-replace:

const replace = require('rollup-plugin-replace')

rollup({
  // ...
  plugins: [
    replace({
      'process.env.NODE_ENV': JSON.stringify('production')
    })
  ]
}).then(...)

Contribution

clone this project

npm install
npm start

Then open http://127.0.0.1:10001/demo/base/index.html

You can choose another page as you want

Changelog

Please read the realase notes.

License

MIT

MIT License Copyright (c) 2017 Johann Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

Chimee 由奇舞团研制的 h5 播放器,它支持 mp4、m3u8、flv 等多种格式。通过插件式开发,能满足业务方快速迭代、灰度发布等要求。让开发者能够轻松快捷地完成视频场景的开发。 展开 收起
JavaScript
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
JavaScript
1
https://gitee.com/qihoo360/chimee.git
git@gitee.com:qihoo360/chimee.git
qihoo360
chimee
chimee
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891