All Projects → Chimeejs → Chimee

Chimeejs / Chimee

Licence: mit
a video player framework aims to bring wonderful experience on browser

Programming Languages

javascript
184084 projects - #8 most used programming language
HTML
75241 projects
typescript
32286 projects

Projects that are alternatives of or similar to Chimee

Xgplayer
A HTML5 video player with a parser that saves traffic
Stars: ✭ 4,792 (+105.49%)
Mutual labels:  video-player, mp4, html5-video, flv, videoplayer, hls, html5-video-player
Clappr
🎬 An extensible media player for the web.
Stars: ✭ 5,436 (+133.1%)
Mutual labels:  video-player, mp4, html5-video, hls, html5-video-player
Mediaelement
HTML5 <audio> or <video> player with support for MP4, WebM, and MP3 as well as HLS, Dash, YouTube, Facebook, SoundCloud and others with a common HTML5 MediaElement API, enabling a consistent UI in all browsers.
Stars: ✭ 7,767 (+233.06%)
Mutual labels:  mp4, html5-video, hls, html5, html5-video-player
clappr-core
Core components of the Clappr player architecture
Stars: ✭ 41 (-98.24%)
Mutual labels:  mp4, video-player, html5-video, html5-video-player
Griffith
A React-based web video player
Stars: ✭ 2,287 (-1.93%)
Mutual labels:  mp4, html5-video, hls, html5-video-player
Html5 Dash Hls Rtmp
🌻 HTML5播放器、M3U8直播/点播、RTMP直播、低延迟、推流/播流地址鉴权
Stars: ✭ 1,805 (-22.6%)
Mutual labels:  html5-video, hls, html5
Node Video Lib
Node.js Video Library / MP4 & FLV parser / MP4 builder / HLS muxer
Stars: ✭ 264 (-88.68%)
Mutual labels:  mp4, flv, hls
React Jplayer
Html5 audio and video player library for React
Stars: ✭ 128 (-94.51%)
Mutual labels:  video-player, html5-video, html5
ZLMediaKit
WebRTC/RTSP/RTMP/HTTP/HLS/HTTP-FLV/WebSocket-FLV/HTTP-TS/HTTP-fMP4/WebSocket-TS/WebSocket-fMP4/GB28181/SRT server and client framework based on C++11
Stars: ✭ 7,790 (+234.05%)
Mutual labels:  mp4, hls, flv
Mxreality.js
普通全景视频,直播全景视频,hls和flv全景VR视频直播,全景图片、VR模型、多终端自适应
Stars: ✭ 386 (-83.45%)
Mutual labels:  video-player, flv, hls
Video.js
Video.js - open source HTML5 & Flash video player
Stars: ✭ 32,478 (+1292.71%)
Mutual labels:  html5-video, hls, html5
Openplayerjs
Lightweight HTML5 video/audio player with smooth controls and ability to play VAST/VPAID/VMAP ads
Stars: ✭ 255 (-89.07%)
Mutual labels:  html5-video, hls, html5
HJPlayer
A HTML5 Player, can play flv and hls by Media Source Extension, based on typescript.
Stars: ✭ 149 (-93.61%)
Mutual labels:  hls, flv, video-element
Zlmediakit
WebRTC/RTSP/RTMP/HTTP/HLS/HTTP-FLV/WebSocket-FLV/HTTP-TS/HTTP-fMP4/WebSocket-TS/WebSocket-fMP4/GB28181 server and client framework based on C++11
Stars: ✭ 5,248 (+125.04%)
Mutual labels:  mp4, flv, hls
Indigo Player
Highly extensible, modern, JavaScript video player. Handles MPEG-Dash / HLS / MPEG-4 and is built on top of the HTML5 video element.
Stars: ✭ 1,173 (-49.7%)
Mutual labels:  video-player, html5-video, hls
Node Media Server
Node.js Media Server / VOD / HLS / DRM
Stars: ✭ 49 (-97.9%)
Mutual labels:  mp4, flv, hls
Magicalexoplayer
The Easiest Way To Play/Stream Video And Audio Using Google ExoPlayer In Your Android Application
Stars: ✭ 171 (-92.67%)
Mutual labels:  mp4, videoplayer, hls
hms-video-demo-android
HUAWEI Video Kit supports streaming media in 3GP, MP4, or TS format and compliant with HTTP/HTTPS, HLS, or DASH. The Kit also provides abundant playback controls, delivering personalized video experiences to users.
Stars: ✭ 22 (-99.06%)
Mutual labels:  mp4, hls, video-player
Larkplayer
🚀 A lightweight & flexible web player :)
Stars: ✭ 82 (-96.48%)
Mutual labels:  video-player, html5-video, html5
Media Server
RTSP/RTP/RTMP/FLV/HLS/MPEG-TS/MPEG-PS/MPEG-DASH/MP4/fMP4/MKV/WebM
Stars: ✭ 1,363 (-41.55%)
Mutual labels:  mp4, flv, hls

Chimee

Build Status Coverage Status npm dependency Status devDependency Status tested with jest jest Code Quality: Javascript Total Alerts Greenkeeper badge

English | 中文

Introduction

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

In most situations, we need to support complex functions based on video, such as many videos or advertising. It's hard to maintain them if you we just write it based on the video element. So we may need to have an iframe to sort out the logic and handle the communication. So Chimee offers a plugin system, so that anyone can split your complex functions into multiple plugins. Through this method of development, developers can decouple logic to achieve a quicker, gray-scale release and implement many other functions with relative ease.

Chimee helps developer to reach complex video capabilities from scratch easier and quicker.

Features

Chimee is a web video player.

  1. It supports multiple video stream including mp4, m3u8, flv, and more.
  2. It solves most of the compatibility problems including cross-browser fullscreen, autoplay, and playing inline.

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

  1. It helps us to split complex functions off into multiple plugins.
  2. Each plugin can work on the video element directly and easily.
  3. This framework sorts out the hierarchical relationship between plugins, which will keep us free from the z-index problem.
  4. It provides a variety of modules such as a transparent plugin, a penetrating plugin, an inner plugin, and an outer plugin, which will cover most of the interactive scenarios.
  5. It offers us convenient ways to communicate between plugins.
  6. It allows us to define plugin priority, which has been useful in making the advertising plugin work as expected.
  7. It also supports asynchronous plugins.

Installation

npm

npm install --save chimee

cdn

You can get the cdn url on https://cdnjs.com/libraries/chimee.

If you are in china, you can get the cdn url on https://www.jsdelivr.com/package/npm/chimee.

Usage

You can use Chimee directly.

Assuming you have a div whose id is wrapper:

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

You can then 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 more customization; Chimee can be called by passing in an object:

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

If you need to play video in flv or hls, you can simply add those kernels:

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,
  kernels: {
    flv,
    hls
  }
});
chimee.play();

Or you can try installKernel, and then use it:

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

If you want to know more about Chimee, please read more on our API docs, here.

However, if you use Chimee directly, it's best to add this style to 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 simply use the default styles of browsers if you do not use any plugins. But you may want to try our UI plugin…

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

If you want to know more about Chimee's plugins, please read more here.

If you don't want more capabilities, and just need a useful video player, you can install chimee-player, which contains the base ui and a loggerL

import ChimeePlayer from 'chimee-player';

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

FAQ

TODO: more coming soon!~

  1. What is Chimee?
  2. What is Chimee's plugin?
  3. How do I write a plugin?
  4. How do I write an advertising plugin??
  5. How do I write a UI plugin?

Explanation of Different Builds

You will find four different builds in the lib.

Name Kind Meaning Define environment?
index.js commonjs Common javascript, mostly used in Webpack 1. Yes
index.mjs esmodule An es module, mostly used in Webpack 2 and rollup. Yes
index.browser.js umd Can be used directly in browser No (It's in development)
index.min.js umd Can be used directly in browser No (It's in production)
Index.esm.js esmodule An es module, mostly used in browser es module No (It's in development)

Development

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. Developers are be responsible for minifying the final bundle themselves.

CommonJS and ES Module builds also preserve raw checks for process.env.NODE_ENV to determine the mode they should run in. Developers 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, agressively 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

Install 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 release notes.

License

MIT

Please read the release notes.

Donation

You can donate to us through Alipay. That will keep us moving.

image

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].