moviemasher / moviemasher.js Goto Github PK
View Code? Open in Web Editor NEWJavaScript library for realtime, browser-based video and audio editing
License: Mozilla Public License 2.0
JavaScript library for realtime, browser-based video and audio editing
License: Mozilla Public License 2.0
Hi, I managed to set up everything with SQS, S3 and moviemasher transcoder API on AWS and its working fine untill I try to import a very short movie which results in less than 100 frame files on S3... in this case transcoder names files like 01.jpg, 02.jpg and so on but moviemasher.js still tries to poll 001.jpg, 002.jpg etc. how can I avoid that?
Also, when I'm rendering a movie from mash it gets uploaded to S3 without specifying a mime type ( which results in download from S3 link instead of showing movie ). How can I set a mime type in export data structure?
Thanks in advance!
Hi,
I pull the code and follow these step:
install git, npm, bower and grunt
npm install (INSTALLING MODULES)
bower install --production --allow-root (INSTALL DEPENDENCIES)
grunt (CHECKING AND GENERATES FILE )
and i also download docker and follows these steps
In the documentation doesn't mention how to run?
Can you please tell how to run this application?
Load Theme failed
https://unpkg.com/@moviemasher/[email protected]/umd/theme-default.js
As per read doc its not running.Can please describe more how it can be run?
The npm run build command fails for me when following the instructions in Development. I'm sure I'm missing something obvious, but what?
ccammack@rails:~/work$ uname -a
Linux rails 5.13.0-44-generic #49~20.04.1-Ubuntu SMP Wed May 18 18:44:28 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
ccammack@rails:~/work/mm$ npm -v
6.14.4
ccammack@rails:~/work/mm$ node -v
v10.19.0
ccammack@rails:~/work$ git clone https://github.com/moviemasher/moviemasher.js.git mm
Cloning into 'mm'...
remote: Enumerating objects: 16655, done.
remote: Counting objects: 100% (2797/2797), done.
remote: Compressing objects: 100% (1375/1375), done.
remote: Total 16655 (delta 2071), reused 1842 (delta 1409), pack-reused 13858
Receiving objects: 100% (16655/16655), 35.62 MiB | 9.52 MiB/s, done.
Resolving deltas: 100% (12053/12053), done.
ccammack@rails:~/work$ cd mm
ccammack@rails:~/work/mm$ npm install
npm WARN read-shrinkwrap This version of npm is compatible with lockfileVersion@1, but package-lock.json was generated for lockfileVersion@2. I'll try to do my best with it!
npm WARN deprecated [email protected]: Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future
> [email protected] install /home/ccammack/work/mm/node_modules/canvas
> node-pre-gyp install --fallback-to-build
[canvas] Success: "/home/ccammack/work/mm/node_modules/canvas/build/Release/canvas.node" is installed via remote
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
added 530 packages from 551 contributors and audited 533 packages in 21.794s
66 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
ccammack@rails:~/work/mm$ npm run build
> @moviemasher/[email protected] build /home/ccammack/work/mm
> run-s build-core build-client build-server build-example build-example-react
> @moviemasher/[email protected] build-core /home/ccammack/work/mm
> npm run build -w @moviemasher/moviemasher.js
> @moviemasher/[email protected] build /home/ccammack/work/mm
> run-s build-core build-client build-server build-example build-example-react "@moviemasher/moviemasher.js"
ERROR: Task not found: "@moviemasher/moviemasher.js"
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @moviemasher/[email protected] build: `run-s build-core build-client build-server build-example build-example-react "@moviemasher/moviemasher.js"`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @moviemasher/[email protected] build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/ccammack/.npm/_logs/2022-05-26T15_23_16_924Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @moviemasher/[email protected] build-core: `npm run build -w @moviemasher/moviemasher.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @moviemasher/[email protected] build-core script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/ccammack/.npm/_logs/2022-05-26T15_23_16_976Z-debug.log
ERROR: "build-core" exited with 1.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @moviemasher/[email protected] build: `run-s build-core build-client build-server build-example build-example-react`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @moviemasher/[email protected] build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/ccammack/.npm/_logs/2022-05-26T15_23_17_030Z-debug.log
ccammack@rails:~/work/mm$ cat /home/ccammack/.npm/_logs/2022-05-26T15_23_16_924Z-debug.log
0 info it worked if it ends with ok
1 verbose cli [ '/usr/bin/node',
1 verbose cli '/usr/bin/npm',
1 verbose cli 'run',
1 verbose cli 'build',
1 verbose cli '-w',
1 verbose cli '@moviemasher/moviemasher.js' ]
2 info using [email protected]
3 info using [email protected]
4 verbose run-script [ 'prebuild', 'build', 'postbuild' ]
5 info lifecycle @moviemasher/[email protected]~prebuild: @moviemasher/[email protected]
6 info lifecycle @moviemasher/[email protected]~build: @moviemasher/[email protected]
7 verbose lifecycle @moviemasher/[email protected]~build: unsafe-perm in lifecycle true
8 verbose lifecycle @moviemasher/[email protected]~build: PATH: /usr/share/npm/node_modules/npm-lifecycle/node-gyp-bin:/home/ccammack/work/mm/node_modules/.bin:/usr/share/npm/node_modules/npm-lifecycle/node-gyp-bin:/home/ccammack/work/mm/node_modules/.bin:/usr/share/npm/node_modules/npm-lifecycle/node-gyp-bin:/home/ccammack/work/mm/node_modules/.bin:/home/ccammack/.rvm/gems/ruby-3.0.0/bin:/home/ccammack/.rvm/gems/ruby-3.0.0@global/bin:/home/ccammack/.rvm/rubies/ruby-3.0.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/ccammack/.rvm/bin:/home/ccammack/.rvm/bin
9 verbose lifecycle @moviemasher/[email protected]~build: CWD: /home/ccammack/work/mm
10 silly lifecycle @moviemasher/[email protected]~build: Args: [ '-c',
10 silly lifecycle 'run-s build-core build-client build-server build-example build-example-react "@moviemasher/moviemasher.js"' ]
11 silly lifecycle @moviemasher/[email protected]~build: Returned: code: 1 signal: null
12 info lifecycle @moviemasher/[email protected]~build: Failed to exec build script
13 verbose stack Error: @moviemasher/[email protected] build: `run-s build-core build-client build-server build-example build-example-react "@moviemasher/moviemasher.js"`
13 verbose stack Exit status 1
13 verbose stack at EventEmitter.<anonymous> (/usr/share/npm/node_modules/npm-lifecycle/index.js:332:16)
13 verbose stack at EventEmitter.emit (events.js:198:13)
13 verbose stack at ChildProcess.<anonymous> (/usr/share/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack at ChildProcess.emit (events.js:198:13)
13 verbose stack at maybeClose (internal/child_process.js:982:16)
13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:259:5)
14 verbose pkgid @moviemasher/[email protected]
15 verbose cwd /home/ccammack/work/mm
16 verbose Linux 5.13.0-44-generic
17 verbose argv "/usr/bin/node" "/usr/bin/npm" "run" "build" "-w" "@moviemasher/moviemasher.js"
18 verbose node v10.19.0
19 verbose npm v6.14.4
20 error code ELIFECYCLE
21 error errno 1
22 error @moviemasher/[email protected] build: `run-s build-core build-client build-server build-example build-example-react "@moviemasher/moviemasher.js"`
22 error Exit status 1
23 error Failed at the @moviemasher/[email protected] build script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]
Hello,
I'm getting the following error when I run npm run build. Could you please tell me what I am doing wrong?
Syntaxfehler.
ERROR: "clean-create" exited with 1.
ERROR: "clean" exited with 1.
npm ERR! Lifecycle script build
failed with error:
npm ERR! Error: command failed
npm ERR! in workspace: [email protected]
npm ERR! at location: C:...\moviemasher.js\workspaces\example-express-react
ERROR: "build-example" exited with 1.
Many thanks in advance for your help.
is there a way to produce webm and ogg files from a mash with masher transcoder? will it work if I send webm/ogg in output object 'extension' field or should I use some specific video codec or something?
Thanks!
when I embed mplayer in a default way i.e.:
var context = document.getElementById("mm-canvas").getContext('2d');
mm_player = MovieMasher.player({canvas_context: context});
MovieMasher.register(MovieMasher.Constant.filter, [
{ "id":"overlay", "source": "//static2.rekt.gg/js/filters/overlay.js" },
{ "id":"scale", "source": "//static2.rekt.gg/js/filters/scale.js" },
{ "id":"setsar", "source": "//static2.rekt.gg/js/filters/setsar.js" }
]);
mm_player.mash = "....";
it results with a player element displaying frames in a dramatically low quality ( 300x150 png ) how can I set a different quality? ( raw frames downloaded by player from ny server are 768x432 jpg )
also how can I set frames dimensions different than 768x432? I tried to set 'dimensions' firld to sequence output object in import job but w/o any effect...
Thanks in advance!
Slaw from rekt.gg team
I was wondering how can I save a movie composed with moviemasher, Couldn't found much documentation about it.
Hello,
I am unable to run moviemasher client-react on my local without docker through varies required packages.
There is no proper documentation to run it without docker. Can you please guide me with some documentation or tutorials.
I'm new in npm environment.
My PC using windows 10 and environment is xampp.
You can help me how can I run my localhost.
I follow your step and install npm but still can't run.
Hello there.
My name is Ivano Arrighetta and I'm Italian.
I would like to suggest some features for MovieMasher, here they are:
reverse play (plays a video from end to start)
flip video (horizontally and/or vertically)
transform video (rotate, translate, scale - in every case, a background color/image/video should be set for blank areas)
custom transitions (let a grayscale image/animation represent 2 videos: black: video1, white: video2. The user draws an image/animation in a grayscale shade and the gray intensity up to 255 represents the alpha for video1, while the intensity from 255 to 0 represents the alpha for video2. This way, any transition could be made, even with blending, without hardcoding various transitions)
free transform video (skew, shear and cage distort videos - again, a background color/image/video should be set for blank areas)
video placeholders (enable a video/image as background and place video placeholders to render them on that, either just masked or transformed)
Thanks in advance for any help.
Bye, Ivano.
Hello @syntropo
I see that there is no transition effect in MovieMasher version 5.1.1, but in MovieMasher version 5.0.6 the transition effect is working. Please tell me how can I add transition effect in version 5.1.1.
Is it possible to make it available on npm? Also it would be great to split backend/frontend lib.
Hello,
There is a bug when I render a video.
If I split up the video into different segments, the result appear just fine in the video preview. However, when I render the video, each segment will start at the beginning of the video file instead.
For me, 5.0.6 version of moviemasher is working fine. But when I am trying to compose the new docker image with changes, I end up with various issues like: docker compose vs docker-compose commands written in scripts or issues with node modules installation/versioning or esm build failing because of dependency on other packages...
I am using the same commands to build and run docker image like sudo npm run build
Can you please share your development environment version of different software like: npm, node, docker, os, etc?
Thanks in advance !!!
I wish my output video to have the same dimensions as original. How can I do that? If I ommit 'dimensions' setting for output in export job transcoder resizes everything to some default size, if I set it it obviously resizes everything to the size I've set but how to make it remain unchanged?
Is there any way to get source video dimensions in import callback for example?
Is the mirgration guide for old xml files to new json files available? Does the new implementation cover all features of the old php implemetation?
Best regards,
Peter
The readme don't close code properly, 3 backticks ``` need to be in separated line.
Dear, is it there any frontend/gui for this?
Thx.
i have download a zip , i am not able to identify how to run it?
Hi Dan,
I have movie masher installed on amazon at ec2-54-92-237-232.compute-1.amazonaws.com.
I wanna be able to pull up a particular mash via url.
What is the default username and password to login to the server 'cos I would like to customize the ui?How do I authenticate into the server using putty.
I also wanna figure out how to port my authentication code (written for version 3) to version 4. Please see zipped folder.
to_dan.zip
Where are the mashes stored 'cos they arent stored in the user folder as in version 3.
I would appreciate it if you could help me out.
Thanks!
http://convert-video-online.com/
similar to this
Hello there again.
Is it possible to use MovieMasher with just plain HTML?
Thanks in advance for any help.
Bye, Ivano.
Hey, I have a problem, one of our users ( rekt.gg ) tries to upload a video file without an audio. Once such a video gets transcode via MovieMasher Transcoder it results with frame files and original; mp4 file ( audio.mp3 and waveform.png are not being produced ). The problem is that moviemasher.js does not autoplay such a mash after loaded.
Here is a mash I use: http://www.jsoneditoronline.org/?id=5e61bc109296e2d288dd97045a52a470
The questions are:
Thanks in advance!
Slaw
rekt.gg
Hi @syntropo,
We have implemented raindrop/ripple effect in movie-masher(5.1.1) through react-shadertoy,
As we are planning to render the shader effect through the canvas in (5.1.1) version. for this, we have few approaches that I would like to discuss with you.
[High-level approach - First]
[High-level approach - Second]
[High-level approach - Three]
please share your thoughts on this.
Thanks
AK
How can I use VideoPlayer in Cordova App (no server) to play a video composed from images & video clips?
Thanks
Hi @syntropo while testing a few functionalities on Moviemasher 5.1.1 I encountered one issue:
When tried to render an audio file along with video, the render server was throwing the error "matches no streams" and couldn't complete the render. Below is the complete log.
Can you please suggest what is causing the issue or if I can fix it by making any code changes? Thanks !!!
0|server | {
0|server | error: '/home/node/app/workspaces/example-express-react/host/public/media/admin/a03089f5-2b61-46ac-8884-642b8e3a0031/76749934-c41a-4c56-9c28-0e35341b0ba7/video.mp4 failed\n' +
0|server | "Error: ffmpeg exited with code 1: Stream specifier ':v' in filtergraph description [2:v]copy;aevalsrc=exprs=0:duration=5.7[SILENCE];[0:a]atrim=duration=5.7[atrim10];[SILENCE][atrim10]amix=normalize=0[clip4];[1:a]atrim=duration=3.2[atrim11];[atrim11]adelay=delays=100:all=1[adelay1];[clip4][adelay1]amix=normalize=0 matches no streams.\n" +
0|server | 'ffmpeg\n' +
0|server | '-i workspaces/example-express-react/host/public/media/admin/a03089f5-2b61-46ac-8884-642b8e3a0031/76749934-c41a-4c56-9c28-0e35341b0ba7/video.concat/concat.txt\n' +
0|server | '\n' +
0|server | '-i workspaces/example-express-react/host/public/media/admin/328222cc-f99c-4585-884a-e05d9ed8135c/original.mp4\n' +
0|server | '\n' +
0|server | '-i workspaces/example-express-react/host/public/media/admin/71b4206f-1faf-45c2-ae8d-3ae791291e40/original.mp3\n' +
0|server | '\n' +
0|server | '-y\n' +
0|server | '\n' +
0|server | '-filter_complex \n' +
0|server | '[2:v]copy;\n' +
0|server | '\n' +
0|server | 'aevalsrc=exprs=0:duration=5.7[SILENCE];\n' +
0|server | '\n' +
0|server | '[0:a]atrim=duration=5.7[atrim10];\n' +
0|server | '[SILENCE][atrim10]amix=normalize=0[clip4];\n' +
0|server | '\n' +
0|server | '[1:a]atrim=duration=3.2[atrim11];\n' +
0|server | '[atrim11]adelay=delays=100:all=1[adelay1];\n' +
0|server | '[clip4][adelay1]amix=normalize=0\n' +
0|server | '\n' +
0|server | '-acodec aac\n' +
0|server | '\n' +
0|server | '-b:a 160k\n' +
0|server | '\n' +
0|server | '-ac\n' +
0|server | '\n' +
0|server | '-ar\n' +
0|server | '\n' +
0|server | '-vcodec libx264\n' +
0|server | '\n' +
0|server | '-r\n' +
0|server | '\n' +
0|server | '-g 60\n' +
0|server | '\n' +
0|server | '-level 41\n' +
0|server | '\n' +
0|server | '-movflags faststart\n' +
0|server | '\n' +
0|server | '-t 5.7\n' +
0|server | '\n' +
0|server | '-hide_banner\n' +
0|server | '\n' +
0|server | '-shortest\n' +
0|server | '\n' +
0|server | '-c:v copy\n' +
0|server | '\n' +
0|server | '/home/node/app/workspaces/example-express-react/host/public/media/admin/a03089f5-2b61-46ac-8884-642b8e3a0031/76749934-c41a-4c56-9c28-0e35341b0ba7/video.mp4\n' +
0|server | '\n' +
0|server | "Error: ffmpeg exited with code 1: Stream specifier ':v' in filtergraph description [2:v]copy;aevalsrc=exprs=0:duration=5.7[SILENCE];[0:a]atrim=duration=5.7[atrim10];[SILENCE][atrim10]amix=normalize=0[clip4];[1:a]atrim=duration=3.2[atrim11];[atrim11]adelay=delays=100:all=1[adelay1];[clip4][adelay1]amix=normalize=0 matches no streams.\n" +
0|server | '\n' +
0|server | '\n' +
0|server | '\n' +
0|server | '\n' +
0|server | "Input #0, concat, from '/home/node/app/workspaces/example-express-react/host/public/media/admin/a03089f5-2b61-46ac-8884-642b8e3a0031/76749934-c41a-4c56-9c28-0e35341b0ba7/video.concat/concat.txt':\n" +
0|server | ' Duration: 00:00:05.70, start: 0.000000, bitrate: 0 kb/s\n' +
0|server | ' Stream #0:0: Video: h264 (High 4:4:4 Predictive) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 30 fps, 30 tbr, 90k tbn\n' +
0|server | "Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '/home/node/app/workspaces/example-express-react/host/public/media/admin/328222cc-f99c-4585-884a-e05d9ed8135c/original.mp4':\n" +
0|server | ' Metadata:\n' +
0|server | ' major_brand : isom\n' +
0|server | ' minor_version : 512\n' +
0|server | ' compatible_brands: isomiso2avc1mp41\n' +
0|server | ' encoder : Lavf58.44.100\n' +
0|server | ' Duration: 00:00:05.76, start: 0.000000, bitrate: 3956 kb/s\n' +
0|server | ' Stream #1:00x1: Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 3857 kb/s, 30 fps, 30 tbr, 15360 tbn (default)\n' +
0|server | ' Metadata:\n' +
0|server | ' handler_name : ISO Media file produced by Google Inc. Created on: 08/17/2020.\n' +
0|server | ' vendor_id : [0][0][0][0]\n' +
0|server | ' Stream #1:10x2: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)\n' +
0|server | ' Metadata:\n' +
0|server | ' handler_name : ISO Media file produced by Google Inc. Created on: 08/17/2020.\n' +
0|server | ' vendor_id : [0][0][0][0]\n' +
0|server | "Input #2, mp3, from '/home/node/app/workspaces/example-express-react/host/public/media/admin/71b4206f-1faf-45c2-ae8d-3ae791291e40/original.mp3':\n" +
0|server | ' Metadata:\n' +
0|server | ' encoder : Lavf57.83.100\n' +
0|server | ' Duration: 00:00:03.24, start: 0.025057, bitrate: 128 kb/s\n' +
0|server | ' Stream #2:0: Audio: mp3, 44100 Hz, stereo, fltp, 128 kb/s\n' +
0|server | ' Metadata:\n' +
0|server | ' encoder : Lavc57.10\n' +
0|server | "Stream specifier ':v' in filtergraph description [2:v]copy;aevalsrc=exprs=0:duration=5.7[SILENCE];[0:a]atrim=duration=5.7[atrim10];[SILENCE][atrim10]amix=normalize=0[clip4];[1:a]atrim=duration=3.2[atrim11];[atrim11]adelay=delays=100:all=1[adelay1];[clip4][adelay1]amix=normalize=0 matches no streams.\n" +
0|server | '\n' +
0|server | '\n' +
0|server | "ffmpeg -i workspaces/example-express-react/host/public/media/admin/a03089f5-2b61-46ac-8884-642b8e3a0031/76749934-c41a-4c56-9c28-0e35341b0ba7/video.concat/concat.txt -i workspaces/example-express-react/host/public/media/admin/328222cc-f99c-4585-884a-e05d9ed8135c/original.mp4 -i workspaces/example-express-react/host/public/media/admin/71b4206f-1faf-45c2-ae8d-3ae791291e40/original.mp3 -y -filter_complex '[2:v]copy;aevalsrc=exprs=0:duration=5.7[SILENCE];[0:a]atrim=duration=5.7[atrim10];[SILENCE][atrim10]amix=normalize=0[clip4];[1:a]atrim=duration=3.2[atrim11];[atrim11]adelay=delays=100:all=1[adelay1];[clip4][adelay1]amix=normalize=0' -acodec aac -b:a 160k -ac -ar -vcodec libx264 -r -g 60 -level 41 -movflags faststart -t 5.7 -hide_banner -shortest -c:v copy /home/node/app/workspaces/example-express-react/host/public/media/admin/a03089f5-2b61-46ac-8884-642b8e3a0031/76749934-c41a-4c56-9c28-0e35341b0ba7/video.mp4"
0|server | }
Dear, would you mind embedding this in Tiki? (https://tiki.org/HomePage)
Tiki includes Kaltura (https://corp.kaltura.com/solutions/video-paas/), which is something like YouTube.
A video editor could be very useful inside
Hello,
Please forgive my ignorance but I have the example-express-react running. However, there appears to be no functionality. I can click on the upload cloud icon which brings-up the file dialog, but once a video is selected, the only thing that happens is a long white bar appearing next to the upload icon. Otherwise, nothing happens. None of the other buttons seem to do anything either. Is this correct?
Would be grateful for any pointers.
HOW CAN WE RUN THE APPLICATION ?
PLEASE LET ME KNOW THE STEP HOW TO RUN AFTER BUILD
GRUNT COMMAND ......
what are the frame navigation methods for moviemasher.js? I mean something like gotoAndStop(f) / gotoAndPlay(f) etc.?
lets say we have a mash and a player paused in particular frame - how can I get to the current bitmap data of clips visible on scene?
I mean, I know I can do:
pt.getCurrentUrls = function( )
{
var clips;
clips = Mash.range_clips(this.__mash, this.__time, false);
return Mash.urls_for_clips_by_type(this.__mash, clips, this.__time);
};
inside Player object definition however I wish to do it without a need to modify moviemasher.js file is that possible? ( Mash is obviously not visible outside due to the module definition style )
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.