• Stars
    star
    339
  • Rank 124,632 (Top 3 %)
  • Language
    JavaScript
  • License
    Apache License 2.0
  • Created over 8 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🔮 An embeddable, lightweight 360º video/image viewer

Kaleidoscope

An embeddable, lightweight, dependency-free 360º video/image viewer

demo

Examples

The examples code can be found in the examples/ folder.

Viewing 360 Images

Viewing 360 Videos with HLS*

Viewing 360 Videos with DASH*

Viewing 360 Videos with progressive download

  • The HLS and Dash examples doesn't work on old Safari and iOS due CORS restrictions

Usage

Get the code:

$ npm install kaleidoscopejs

Add the script to your page:

<script src="node_modules/kaleidoscopejs/dist/kaleidoscope.min.js"></script>

or import the library using your favorite bundler.

Videos

var viewer = new Kaleidoscope.Video({source: 'equirectangular-video.mp4', containerId: '#target'});
viewer.render();

Images

var viewer = new Kaleidoscope.Image({source: 'equirectangular-image.jpg', containerId: '#target'});
viewer.render();

Documentation

Kaleidoscope.Video

let viewer = new Kaleidoscope.Video(options)
options
Object.

options.source source video to be played. This can be either a video tag or an url to the video file. Passing a tag is useful when embedding in player or using adaptative streaming. An example of how to use it with HLS.js can be found here.

options.containerId is where you want to render the 360, this is going to be retrieved via document.querySelector and when you call render() the 360 canvas will be append to it.

options.container HTML element to attach the 360 canvas to. You should always either pass a containerId or a container.

options.height height of the 360 canvas. Defaults to 360.

options.width width of the 360 canvas. Defaults to 640.

options.autoplay to autoplay the video once rendered. Doesn't work on mobile. Defaults to true.

options.muted to define if the video should start muted. Defaults to false.

options.initialYaw number to define initial yaw of 360, should be in degrees(45, 90, 180 etc).

options.loop to define if the video should loop. Defaults to false.

options.onError callback to when something goes wrong.

options.verticalPanning disables vertical panning. Defaults to false.

options.onDragStart callback called when user interaction starts.

options.onDragStop callback called when user interaction ends.

viewer.render() renders the canvas in the defined containerId or container.

viewer.play() starts the current video. Useful for mobile.

viewer.pause() pauses the current video.

viewer.centralize() move camera back to the original center.

viewer.setSize({height, width}) sets canvas size.

viewer.destroy() destroy viewer cleaning up all used resources.

Kaleidoscope.Image

let viewer = new Kaleidoscope.Image(options)
options
Object.

options.source source of the image to be rendered. This can be either an url to the image or the img tag itself.

options.containerId is where you want to render the 360, this is going to be retrieved via document.querySelector and when you call render() the 360 canvas will be append to it.

options.container HTML element to attach the 360 canvas to. You should always either pass a containerId or a container.

options.height height of the 360 canvas. Defaults to 360.

options.width width of the 360 canvas. Defaults to 640.

options.initialYaw number to define initial yaw of 360, should be in degrees(45, 90, 180 etc).

options.verticalPanning disables vertical panning. Defaults to false.

options.onDragStart callback called when user interaction starts.

options.onDragStop callback called when user interaction ends.

options.onError callback to when something goes wrong.

viewer.render() renders the canvas in the defined containerId or container.

viewer.centralize() move camera back to the original center.

viewer.setSize({height, width}) sets canvas size.

viewer.destroy() destroy viewer cleaning up all used resources.

Supported Browsers

  • Google Chrome
  • Microsoft Edge
  • Firefox
  • Internet Explorer 11
  • Safari
  • Chrome Android*
  • Safari iOS

*Most recent versions.

Known issues

360 videos doesn't work in Safari, IE 11, Microsoft Edge, Android and iOS if the video is served from a different domain, due some CORS implementation bugs.

Donations

Would you like to buy me a beer?

ETH 0x2230591c013e4E7e3B819B2B51496e34ED884c03

BTC 16qKaBh6DuuJuaQp4x3Eut8MAsVnpacVm5

More Repositories

1

groot

🌳 The Groot Programming Language
Rust
381
star
2

unregistered

®️ Best Atom plugin for sublime text users
CoffeeScript
278
star
3

clappr-video360

360 video plugin for Clappr
JavaScript
108
star
4

rustico

💣 Yet another tiny and unfinished x86/ARM kernel
Rust
82
star
5

hexo-persona-dark

Persona Dark is a theme for Hexo, based on it's default light theme
CSS
22
star
6

rawgorithms

Algorithms and data structures in Rust
Rust
12
star
7

hls.wasm

a notsoactivewipexperiment for HLS playlist parsing/transmuxing in Rust targeting WebAssembly
Rust
5
star
8

raft

a CLI bittorrent client
Rust
3
star
9

.vim

Vim files.
Vim Script
3
star
10

ffmpeg-recipes

2
star
11

1-bit-adder

Simple 1 bit adder with a carry out bit using SystemC
C
2
star
12

audio-to-text-telegram-bot

Telegram bot that transcribes audio messages to text
JavaScript
2
star
13

threejs360

custom threejs build for 360 videos
JavaScript
2
star
14

clappr-player

a clappr web component
JavaScript
2
star
15

newsFeed

Sample application that uses socket.io to feed an angularjs view with information pushed from the server continuously.
JavaScript
2
star
16

advent-of-code-2022

https://adventofcode.com/
Python
2
star
17

2-bit-full-adder

Simple 2-bit full adder using systemC
C
2
star
18

dyslexia

Dyslexia is a plugin for Atom to help you keep track of which window is currently on focus
CoffeeScript
2
star
19

task-list

small task list built with angularjs, backed by sinatra
Ruby
2
star
20

ChartsApp

Creates charts based on logs generated by an specific SystemC application
Python
2
star
21

nvim

Neovim 0.8+ only configs(maybe just HEAD neovim lol)
Lua
2
star
22

SystemC

Simple SystemC example
C
1
star
23

thiagopnts.github.com

personal page
JavaScript
1
star
24

bare-player

JavaScript
1
star
25

jellybeans

Lush based colorscheme for NeoVim
Lua
1
star
26

pyBatalha-Naval

Projeto de sala de aula em python
Python
1
star
27

eugenia

Eugenia
CoffeeScript
1
star
28

mp4dase

a wip MP4 parser
Rust
1
star
29

Programming

Some programming experimentations and advanced topics, most in C.
C
1
star
30

Rastreador

Small app built at Mozilla Hackathon @ Campus Party Recife, this app track orders in Brazil
CoffeeScript
1
star
31

hls-cookie-proxy

proxies cookies as qs on the fly, definitely not for piracy reasons
Go
1
star
32

Project-Euler

Solutions from the projecteuler.net
1
star
33

simple-man

Jekyll theme
CSS
1
star
34

brainfuck

A brainfuck interpreter and REPL
Rust
1
star
35

docker-images

Docker image for player3-ci
Shell
1
star
36

chat

Classical node.js chat example using socket.io
JavaScript
1
star