a video player framework aims to bring wonderful experience on browser

Overview

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

Comments
  • An in-range update of rollup is breaking the build 🚨

    An in-range update of rollup is breaking the build 🚨

    The devDependency rollup was updated from 1.13.0 to 1.13.1.

    🚨 View failing branch.

    This version is covered by your current version range and after updating it in your project the build failed.

    rollup is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

    Status Details
    • continuous-integration/travis-ci/push: The Travis CI build failed (Details).

    Release Notes for v1.13.1

    2019-06-01

    Bug Fixes

    • Avoid conflicts between top-level module, require etc. and CommonJS runtimes (#2889)

    Pull Requests

    Commits

    The new version differs by 5 commits.

    • 6a8d5ef 1.13.1
    • 52032bb Update changelog
    • 53cde75 Protect all module globals for CJS output from being redefined (#2889)
    • 4a70e08 Update changelog
    • dc87d58 Enable full TypeScript strict mode (#2888)

    See the full diff

    FAQ and help

    There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


    Your Greenkeeper Bot :palm_tree:

    greenkeeper 
    opened by greenkeeper[bot] 72
  • kernel 底层配置问题

    kernel 底层配置问题

    目前,底层参数是在chimee的配置中传入进来的,目前hls、flv、mp4底层所用到的参数都是从这个配置中取的,mp4 只有点播,flv 有直播有点播,hls使用开源项目。 hls 参数有非常多,参见 hls api flv目前需要这些参数 isLive: false, // 是否是直播 seekInKeyframe: true, // 总是seek 到关键帧 alwaysSeekKeyframe: true, // 总是seek 到关键帧 lazyLoadMaxDuration: 2 * 60, // 懒加载 最大播放长度 lazyLoadRecoverDuration: 30, // 懒加载还有多少长度 重启加载功能 lockInternalProperty: false, // 锁定原生的选项 webWorker: false, // 是否开启webworker autoCleanupSourceBuffer: true, // 是否自动清除 sourcebuffer autoCleanupMaxBackwardDuration: 30, // 清除sourcebuffer最大时间 autoCleanupMinBackwardDuration: 30, // 清除sourcebuffer最小时间 stashSize: 1024 * 384, // io缓存大小 直播下建议设置成 1024 * 128 seekType: 'range' // seek请求的方式 是range 还是 query mp4暂时和flv 的差不多 因为都是我实现的,但是以后可能会有不同的差异,因为mp4没有直播。 目前底层需要改动一个参数,需要上层改动代码,而不是透传进来。 是否可以改成 kernels: { flv: { kernel: flv, config: confg } } 目前公用的参数比较少,欢迎讨论一下

    discussion 
    opened by songguangyu 39
  • Update rollup to the latest version 🚀

    Update rollup to the latest version 🚀


    ☝️ Important announcement: Greenkeeper will be saying goodbye 👋 and passing the torch to Snyk on June 3rd, 2020! Find out how to migrate to Snyk and more at greenkeeper.io


    The devDependency rollup was updated from 1.32.1 to 2.0.0.

    This version is not covered by your current version range.

    If you don’t accept this pull request, your project will work just like it did before. However, you might be missing out on a bunch of new features, fixes and/or performance improvements from the dependency update.


    Publisher: lukastaegert License: MIT

    Find out more about this release.


    FAQ and help

    There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


    Your Greenkeeper bot :palm_tree:

    greenkeeper 
    opened by greenkeeper[bot] 28
  • Update @types/node to the latest version 🚀

    Update @types/node to the latest version 🚀

    The devDependency @types/node was updated from 12.12.26 to 13.5.1.

    This version is not covered by your current version range.

    If you don’t accept this pull request, your project will work just like it did before. However, you might be missing out on a bunch of new features, fixes and/or performance improvements from the dependency update.


    Publisher: types License: MIT

    Find out more about this release.


    FAQ and help

    There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


    Your Greenkeeper bot :palm_tree:

    greenkeeper 
    opened by greenkeeper[bot] 28
  • An in-range update of @types/node is breaking the build 🚨

    An in-range update of @types/node is breaking the build 🚨

    The devDependency @types/node was updated from 12.7.5 to 12.7.6.

    🚨 View failing branch.

    This version is covered by your current version range and after updating it in your project the build failed.

    @types/node is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

    Status Details
    • continuous-integration/travis-ci/push: The Travis CI build failed (Details).

    FAQ and help

    There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


    Your Greenkeeper Bot :palm_tree:

    greenkeeper 
    opened by greenkeeper[bot] 27
  • Update rollup to the latest version 🚀

    Update rollup to the latest version 🚀


    🚨 Reminder! Less than one month left to migrate your repositories over to Snyk before Greenkeeper says goodbye on June 3rd! 💜 🚚💨 💚

    Find out how to migrate to Snyk at greenkeeper.io


    The devDependency rollup was updated from 1.32.1 to 2.9.0.

    This version is not covered by your current version range.

    If you don’t accept this pull request, your project will work just like it did before. However, you might be missing out on a bunch of new features, fixes and/or performance improvements from the dependency update.


    Publisher: lukastaegert License: MIT

    Release Notes for v2.9.0

    2020-05-10

    Features

    • Add ids of static and dynamic imports to this.getModuleInfo (#3542)
    • Provide getModuleInfo and getModuleIds to manualChunks functions (#3542)
    • Add nullish coalescing support (#3548)
    • Make the rebuild delay in watch mode configurable and set the default to 0 for snappy rebuilds (#3502)
    • Add this.getModuleIds to the plugin context as future replacement for this.moduleIds (#3542)

    Pull Requests

    Commits

    The new version differs by 126 commits.

    • 67ebd53 2.9.0
    • 6d6a180 Fix watch tests on Mac
    • c6c2532 Update changelog
    • 7e5c0d2 Configurable Build Delay (Currently Hardcoded at 200ms) (#3502)
    • f63e54d Extend manualChunks API (#3542)
    • e6d6876 Support nullish coalescing with tree-shaking (#3548)
    • 6919037 Update changelog
    • 0698b6e 2.8.2
    • a7a6db4 Update changelog
    • 1ca18a3 Wrap object expressions in parentheses if they become children of an arrow function expression (#3540)
    • c445d60 2.8.1
    • 1094f82 Update changelog
    • e5cf74c Use default named export with plugins (#3529)
    • a2b961d Track call side-effects both by entity and CallExpression to avoid untracked side-effects in nested calls (#3539)
    • 35b0f78 2.8.0

    There are 126 commits in total.

    See the full diff


    FAQ and help

    There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


    Your Greenkeeper bot :palm_tree:

    greenkeeper 
    opened by greenkeeper[bot] 17
  • Update rollup-plugin-visualizer to the latest version 🚀

    Update rollup-plugin-visualizer to the latest version 🚀

    The devDependency rollup-plugin-visualizer was updated from 1.1.1 to 2.6.0.

    This version is not covered by your current version range.

    If you don’t accept this pull request, your project will work just like it did before. However, you might be missing out on a bunch of new features, fixes and/or performance improvements from the dependency update.


    Publisher: btd License: MIT

    Find out more about this release.


    FAQ and help

    There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


    Your Greenkeeper bot :palm_tree:

    greenkeeper 
    opened by greenkeeper[bot] 17
  • flv直播模式,Safari浏览器播放会卡在第一帧

    flv直播模式,Safari浏览器播放会卡在第一帧

    使用的版本:

    chimee 0.9.3

    使用的kernel:

    chimee-kernel-flv 1.4.10

    使用的插件:

    chimee-plugin-center-state 0.0.10

    使用的config:

    import Chimee from 'chimee';
    import ChimeeFlv from 'chimee-kernel-flv';
    import chimeePluginCenterState from 'chimee-plugin-center-state';
    
    Chimee.install(chimeePluginCenterState);
    
    const player = new Chimee({
      wrapper: '',
      src: '',
      isLive: true,
      autoplay: true,
      controls: true,
      box: 'flv',
      kernels: {
        flv: {
          handler: ChimeeFlv,
          hasVideo: true,
          hasAudio: true,
        },
      },
      plugin: [
        {
          name: chimeePluginCenterState.name,
          errorTips: 'Server error, please reload the page.',
        },
      ],
    });
    

    可复现的推流地址:

    http://20942.liveplay.myqcloud.com/live/20942_8c98bbb420e711e89548f23c91a79606.flv (如果不可用联系我重开)

    预期的效果:

    播放器加载资源后播放。

    实际的效果:

    自动播放时:播放器一直处于loading状态,并且卡在第一帧,有时会有声音。 出现播放按钮时:点击播放按钮,一直卡在第一帧。

    这种情况如果想正常播放需要过15s左右,点击controls上的前进15s按钮,才可以继续播放。

    question 
    opened by jinyang1994 17
  • 在ios app 里面 一直是加载状态,必须要手动点击一次播放才能正常显示 , 还有就是播放 在ios 安卓都没声音

    在ios app 里面 一直是加载状态,必须要手动点击一次播放才能正常显示 , 还有就是播放 在ios 安卓都没声音

    具体地址可以看一下 http://120.79.176.171:8080/100care_server/resources/static/htmls/index.html#/video?plan=%7B%22mobile%22%3A%2215919901868%22,%22token%22%3A%226d2901d4e6943c8af32767c39a6f628f%22,%22titleId%22%3A%228%22,%22titleType%22%3A%221%22%7D 我想问一下这个是我代码使用有问题还是什么? 谢谢了。

    question 
    opened by soulToken 15
  • require([],func)  异步方式  引入某插件模块,然后Chimee.install   但实际是没有安装成功

    require([],func) 异步方式 引入某插件模块,然后Chimee.install 但实际是没有安装成功

    如上标题,如下代码:

    require(['chimee-plugin-danmu'], function(chimeePluginDanmu) { console.log('chimeePluginDanmu',chimeePluginDanmu) Chimee.install(chimeePluginDanmu) })

    插件异步引入成功,然后安装插件 Chimee.install(chimeePluginDanmu),但没有安装成功。

    版本如下:

    chimee v0.9.5

    chimee-plugin-danmu v0.0.8

    寻求帮助,谢啦!

    question 
    opened by westdrug 12
  • An in-range update of @types/lodash is breaking the build 🚨

    An in-range update of @types/lodash is breaking the build 🚨

    The devDependency @types/lodash was updated from 4.14.138 to 4.14.139.

    🚨 View failing branch.

    This version is covered by your current version range and after updating it in your project the build failed.

    @types/lodash is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

    Status Details
    • continuous-integration/travis-ci/push: The Travis CI build failed (Details).

    FAQ and help

    There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


    Your Greenkeeper Bot :palm_tree:

    greenkeeper 
    opened by greenkeeper[bot] 11
  • import chimee 报错  Error: Can't resolve 'core-js/es7/global'

    import chimee 报错 Error: Can't resolve 'core-js/es7/global'

    Expected Behavior【期望行为】

    可以正常引入,不报错

    Current Behavior【实际表现】

    使用import 的方式引入,在项目启动时直接报错,编译未通过

    Possible Solution 【可选方案】

    将node_modules中chimee/lib/index.js中var global = _interopDefault(require('core-js/es7/global'));注释掉

    Steps to Reproduce【复现方法】

    import React, { useLayoutEffect } from 'react' import Chimee from 'chimee' import ChimmeeKernelHls from 'chimee-kernel-hls'

    import './index.less'

    const MonitorCenter: React.FC = (props): JSX.Element => { useLayoutEffect(() => { const chimee = new Chimee({ wrapper: '#video-wrapper', src: '//vjs.zencdn.net/v/oceans.mp4', video: { autoplay: true, muted: false, meted: 'meted' } // isLive: true, // kernels: { // hls: ChimmeeKernelHls // } }) chimee.on('play', () => console.log('play!')) chimee.play() }) return

    }

    export default MonitorCenter

    opened by skjgithub950423 0
  • An in-range update of @types/lodash is breaking the build 🚨

    An in-range update of @types/lodash is breaking the build 🚨


    ☝️ Important announcement: Greenkeeper will be saying goodbye 👋 and passing the torch to Snyk on June 3rd, 2020! Find out how to migrate to Snyk and more at greenkeeper.io


    The devDependency @types/lodash was updated from 4.14.149 to 4.14.150.

    🚨 View failing branch.

    This version is covered by your current version range and after updating it in your project the build failed.

    @types/lodash is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

    Status Details
    • continuous-integration/travis-ci/push: The Travis CI build failed (Details).

    FAQ and help

    There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


    Your Greenkeeper Bot :palm_tree:

    greenkeeper 
    opened by greenkeeper[bot] 5
  • An in-range update of core-js is breaking the build 🚨

    An in-range update of core-js is breaking the build 🚨


    ☝️ Important announcement: Greenkeeper will be saying goodbye 👋 and passing the torch to Snyk on June 3rd, 2020! Find out how to migrate to Snyk and more at greenkeeper.io


    The devDependency core-js was updated from 3.6.4 to 3.6.5.

    🚨 View failing branch.

    This version is covered by your current version range and after updating it in your project the build failed.

    core-js is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

    Status Details
    • continuous-integration/travis-ci/push: The Travis CI build failed (Details).

    FAQ and help

    There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


    Your Greenkeeper Bot :palm_tree:

    greenkeeper 
    opened by greenkeeper[bot] 1
Releases(0.11.0)
  • 0.11.0(Aug 26, 2018)

    We support Picture-in-Picture Api in this version. If you don't know what Picture-in-Picture Api is, you can watch the demo make from Google Chrome.

    We support the basic Api below:

    1. requestPictureInPicture
    2. exitPictureInPicture

    You can enter/leave the Picture-In-Picture mode through the apis above. They will trigger events below.

    1. enterpictureinpicture
    2. leavepictureinpicture

    If you want to know whether your instance is in Picture-In-Picture mode, you can detect it through inPictureInPictureMode attribute.

    On the browsers which don't support Picture-In-Picture mode, we will fallback to a canvas render.

    Source code(tar.gz)
    Source code(zip)
  • 0.10.6(Aug 12, 2018)

    • add index.esm.js to fix https://github.com/Chimeejs/chimee/issues/142

    You can see the demo in https://github.com/Chimeejs/chimee/tree/master/demo/esm-import

    Source code(tar.gz)
    Source code(zip)
  • 0.10.5(Jun 28, 2018)

  • 0.10.4(Jun 26, 2018)

  • 0.10.3(Jun 20, 2018)

  • 0.10.2(Jun 19, 2018)

  • 0.10.1(Jun 9, 2018)

    • add noDefaultContextMenu

    If you want to disable the native context menu of the video. You can set this variable on user config.

    import Chimee from `chimee`;
    
    new Chiee({
      wrapper: 'chimee',
     noDefaultContextMenu: true,
    });
    

    We will prevent the default context menu of video to show.

    Also, you can pass in container and wrapper too. We will disable the context menu inside the dom node.

    Thanks for https://github.com/Chimeejs/chimee/issues/112

    Source code(tar.gz)
    Source code(zip)
  • 0.10.0-alpha.11(Jun 3, 2018)

  • 0.10.0(Jun 3, 2018)

    In 0.10.0, we make a big refactor on the events system which can help us to solve the problem described in #106 and #102.

    We introduce event options. It's the key to use the new event system.

    event options

    We now can pass in event option to provide more info for event.

    The event options including two parameter, target and stage, they are both optional.

    target

    target means the target you need to listen on, you can value below.

    'kernel' | 'container' | 'wrapper' | 'video' | 'video-dom' | 'plugin' | 'esFullscreen'
    

    For example, you used to listen on container by c_.

    // what you used to do
    player.on('c_click', event => console.log(event));
    
    // what you can do now
    player.on('click', event => console.log(event),  { target: 'container' });
    

    stage

    stage means the event stage, it includes 'before' | 'main' | 'after' | '_'

    so you can listen on before play event like this:

    // what you used to do
    player.on('beforePlay', event => console.log(event));
    
    // what you can do now
    player.on('play', event => console.log(event), { stage: 'before' });
    

    emit

    So you can clarify the target of your event emit.

    player.emit({
      name: 'click',
      target: 'container',
    });
    

    registerEvents

    In some situation, the developer may create their own kernel events. So we provide a new interface for developer to register events.

    But we can just register kernel events now.

    import Chimee from 'chimee'
    
    Chimee.registerEvents({
      name: 'test',
      target: 'kernel',
    });
    

    chimee-kernel

    We have merged chimee-kernel into chimee. That make chimee's layer clearer and easier to understand.

    useStyleFullscreen

    In some situation, the browser's fullscreen api do not perform well. We can use css to simulate fullscreen. You can just set useStyleFullscreen to be true like this:

    Chimee.config.useStyleFullscreen = true;
    

    dynamic $autoFocus

    You can change plugin's autoFocus setting whenever you want now.

    New immediate seek on silentload

    We will seek to the current time when you are using silentload with immediate as true.

    panorama

    We published chimee-plugin-panaroma to help you play panorama video. (https://github.com/Chimeejs/chimee/issues/66)

    You can see the demo on https://chimeejs.github.io/chimee-plugin-panorama/

    Source code(tar.gz)
    Source code(zip)
  • 0.10.0-alpha.10(May 30, 2018)

  • 0.10.0-alpha.9(May 19, 2018)

  • 0.10.0-alpha.8(May 16, 2018)

    • We will seek to the current time when you are using silentload with immediate as true

    Please download this version with follow command

    npm install chimee@next
    
    Source code(tar.gz)
    Source code(zip)
  • 0.10.0-alpha.6(May 10, 2018)

    • support dynamic $autoFocus

    You can change plugin's autoFocus setting whenever you want.

    To get the package, install like follow

    npm install chimee@next
    
    Source code(tar.gz)
    Source code(zip)
  • 0.10.0-alpha.5(May 9, 2018)

  • 0.10.0-alpha.4(Apr 26, 2018)

    • suppor useStyleFullscreen on global config

    In some situation, the browser's fullscreen api do not perform well. We can use css to simulate fullscreen. You can just set useStyleFullscreen to be true like this:

    Chimee.config.useStyleFullscreen = true;
    

    You can download this version through this command.

    npm install chimee@next
    
    Source code(tar.gz)
    Source code(zip)
  • 0.10.0-alpha.3(Apr 25, 2018)

  • 0.10.0-alpha.2(Apr 25, 2018)

  • 0.10.0-alpha(Apr 24, 2018)

    You can install this version like this:

    npm install chimee@next --save-dev
    

    event options

    In this version, we make a refactor on our event system, which can help us to solve the problem described in https://github.com/Chimeejs/chimee/issues/106 and https://github.com/Chimeejs/chimee/issues/102.

    We now can pass in event option to provide more info for event.

    The event options including two parameter, target and stage, they are both optional.

    target

    target means the target you need to listen on, you can value below.

    'kernel' | 'container' | 'wrapper' | 'video' | 'video-dom' | 'plugin' | 'esFullscreen'
    

    For example, you used to listen on container by c_.

    // what you used to do
    player.on('c_click', event => console.log(event));
    
    // what you can do now
    player.on('click', event => console.log(event),  { target: 'container' });
    

    stage

    stage means the event stage, it includes 'before' | 'main' | 'after' | '_'

    so you can listen on before play event like this:

    // what you used to do
    player.on('beforePlay', event => console.log(event));
    
    // what you can do now
    player.on('play', event => console.log(event), { stage: 'before' });
    

    emit

    So you can clarify the target of your event emit.

    player.emit({
      name: 'click',
      target: 'container',
    });
    

    registerEvents

    In some situation, the developer may create their own kernel events. So we provide a new interface for developer to register events.

    But we can just register kernel events now.

    import Chimee from 'chimee'
    
    Chimee.registerEvents({
      name: 'test',
      target: 'kernel',
    });
    
    Source code(tar.gz)
    Source code(zip)
  • 0.10.0-alpha.1(Apr 24, 2018)

  • 0.9.5(Mar 10, 2018)

  • 0.9.4(Mar 5, 2018)

  • 0.9.1(Jan 28, 2018)

  • 0.9.0(Jan 20, 2018)

  • 0.8.3(Jan 10, 2018)

  • 0.8.2(Jan 9, 2018)

  • 0.8.1(Jan 2, 2018)

  • 0.8.0(Dec 17, 2017)

  • 0.7.1(Dec 12, 2017)

Owner
ChimeeJS
Chimee for working with video on the web, as an HTML5 video player.
ChimeeJS
SRS Player is a video streaming player, supports HLS/HTTP-FLV/WebRTC etc.

SRS Player is a video streaming player, supports HLS/HTTP-FLV/WebRTC etc.

ossrs 12 Oct 15, 2022
Video.js - open source HTML5 & Flash video player

Video.js - HTML5 Video Player Video.js is a web video player built from the ground up for an HTML5 world. It supports HTML5 video and Media Source Ext

Video.js 34.8k Jan 5, 2023
This is a simple web based media player for playing video and audio. Build with pure HTML, CSS and Javascript. No framework or library included.

Aim-Player This is a simple web based media player for playing video and audio. Build with pure HTML, CSS and Javascript. No framework or library incl

Aim Mikel 2 Jun 27, 2021
Music-Player - Music player application built with HTML, CSS and vanilla JavaScript

Music-Player Music player application built with HTML, CSS and vanilla JavaScrip

Karthik Umashankar 1 Feb 10, 2022
An online stem player. Inspired by but not affiliated with YEEZY TECH X KANO Stem Player.

Stem Player Online An online stem player. Inspired by but not affiliated with YEEZY TECH X KANO Stem Player. https://stemplayeronline.com See the proj

Luke Weiler 23 Nov 13, 2022
The HTML5 video player for the web

Flowplayer website | demos | docs For the impatient Download Flowplayer Unzip Drop the folder under your server Minimal setup <!DOCTYPE html> <head>

Flowplayer 1.9k Dec 30, 2022
HTML5

One file. Any browser. Same UI. Author: John Dyer http://j.hn/ Website: http://mediaelementjs.com/ License: MIT Meaning: Use everywhere, keep copyrigh

MediaElement.js 8k Dec 27, 2022
HTML5

One file. Any browser. Same UI. Author: John Dyer http://j.hn/ Website: http://mediaelementjs.com/ License: MIT Meaning: Use everywhere, keep copyrigh

MediaElement.js 8k Jan 8, 2023
A web video player built for the HTML5 world using React library.

video-react Video.React is a web video player built from the ground up for an HTML5 world using React library. Installation Install video-react and pe

null 2.4k Jan 6, 2023
Modern browsers already had a vivid player for video

Modern browsers already had a vivid player for video. However, web developers and designers still want to custom their own style player for different situations. Sounds like web component will do a lot favor for this purpose. With <msc-ez-video /> support, customize control panel will become a piece of cake. <msc-ez-video /> adopts CSS custom properties, developers could style them as they want.

Paul 1 Dec 29, 2021
Custom full screen video player

Video Player Native video player in html View Demo · Report Bug · Request Feature About The Project This is a custom video player for the web built on

Oscar Castaneda ⬢ 5 Feb 3, 2022
Accessible HTML5 Video Player

Accessible HTML5 Video Player What is it? A lightweight HTML5 video player which includes support for captions and screen reader accessibility. For de

PayPal 2.4k Jan 5, 2023
A high-performance, interactive and customizable video player control, built upon Reanimated v2 & GestureHandler v2

`JSThread` to `JSThread`, `UIThread` to `UIThread`. React Native Reanimated Expo Player 100% written in Typescript video player component, interaction

Alan Toa 58 Jan 4, 2023
Video Player

aksVideoPlayer.js Video Player View the Demo on CodePen → Getting Started Compiled and production-ready code can be found in the dist directory. 1. In

Ahmet Aksungur 5 Oct 22, 2021
Bring the cuteness of r/aww straight to your discord server

Bring the cuteness of r/aww straight to your discord server. Now on Cloudflare workers.

Justin Beckwith 10 Oct 3, 2022
A Node JS Express/Serverless demo application that creates a slideshow video using the Pexels image library and Shotstack video editing API.

Shotstack Pexels Slideshow Video Demo This project demonstrates how to use the Shotstack cloud video editing API to create a video using an HTML form

Shotstack 25 Dec 9, 2022
A Chrome extension to help you inspect Mp4 video content and find irregularities in video streams.

MP4Inspector A Chrome extension to help you inspect Mp4 video content and find irregularities in video streams. Installation In chrome navigate to chr

Bitmovin 48 Nov 28, 2022
An open source Javascript framework for detecting the Adobe Flash Player plugin and embedding Flash (swf) files.

— IMPORTANT UPDATE —¶ ↑ SWFObject is no longer in active development. Flash Player is on the decline, and the authors of SWFObject have moved on to ot

null 1.2k Nov 27, 2022
A browser extension to skip intro, recap and ads on video streaming plaforms

AIO Skipper AIO skipper is a browser extension made for ?? binge watchers ?? . It automatically skip intro, recaps and ads in Netflix, Prime Video, Di

null 6 Nov 2, 2022