caffco / get-video-duration Goto Github PK
View Code? Open in Web Editor NEWGet the duration of a video file
License: MIT License
Get the duration of a video file
License: MIT License
I am unable to use this npm package in my angular component .
But however this npm package works at this repl bin
I understand that repl.it uses the commonJs version of the NPM Module & we need to use the es6 version in angular project so I am taking the following steps.
npm install --save get-video-duration
"node_modules/get-video-duration/dist/es6/index.js"
to scripts in angular.jsondeclare var getVideoDurationInSeconds :any;
in my angular componentgetVideoDurationInSeconds('http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4').then((duration) => {
console.log(duration)
})
But however this throws a ReferenceError: Cannot access 'execa' before initialization Error !!!!!!
I'm using your package to get video durationfrom a url that I am fetching from S3 Bucket. On my local computer, its working perfectly, but after releasing to my server on AWS Ec2, the whole app is crashing and I am getting the error below . Just cant understand what`s problem
Does the package not work on Linux?
Error: Command was killed with SIGSEGV (Segmentation fault): /home/ubuntu/Zooto-Backend/node_modules/@ffprobe-installer/linux-x64/ffprobe -v error -show_format -show_streams https://zooto-event-recordings.s3.eu-west-1.amazonaws.com/65031acf9d7df4ff742127bd/2347081601461/be76abfbc443ab37c95c0fa15ef5ff42_65031acf9d7df4ff742127bd_%2B2347081601461_0.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAYOVAHGFKARIGALXN%2F20230919%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20230919T132249Z&X-Amz-Expires=900&X-Amz-Signature=ce200231059b40282b51f158b4cc6ddf6a3b779b339ce2b1a9872955720e042a&X-Amz-SignedHeaders=host&x-id=GetObject 0|zooto-backend | at makeError (/home/ubuntu/Zooto-Backend/node_modules/execa/lib/error.js:60:11) 0|zooto-backend | at handlePromise (/home/ubuntu/Zooto-Backend/node_modules/execa/index.js:118:26) 0|zooto-backend | at runMicrotasks (<anonymous>) 0|zooto-backend | at processTicksAndRejections (node:internal/process/task_queues:96:5) { 0|zooto-backend | shortMessage: 'Command was killed with SIGSEGV (Segmentation fault): /home/ubuntu/Zooto-Backend/node_modules/@ffprobe-installer/linux-x64/ffprobe -v error -show_format -show_streams https://zooto-event-recordings.s3.eu-west-1.amazonaws.com/65031acf9d7df4ff742127bd/2347081601461/be76abfbc443ab37c95c0fa15ef5ff42_65031acf9d7df4ff742127bd_%2B2347081601461_0.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAYOVAHGFKARIGALXN%2F20230919%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20230919T132249Z&X-Amz-Expires=900&X-Amz-Signature=ce200231059b40282b51f158b4cc6ddf6a3b779b339ce2b1a9872955720e042a&X-Amz-SignedHeaders=host&x-id=GetObject', 0|zooto-backend | command: '/home/ubuntu/Zooto-Backend/node_modules/@ffprobe-installer/linux-x64/ffprobe -v error -show_format -show_streams https://zooto-event-recordings.s3.eu-west-1.amazonaws.com/65031acf9d7df4ff742127bd/2347081601461/be76abfbc443ab37c95c0fa15ef5ff42_65031acf9d7df4ff742127bd_%2B2347081601461_0.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAYOVAHGFKARIGALXN%2F20230919%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20230919T132249Z&X-Amz-Expires=900&X-Amz-Signature=ce200231059b40282b51f158b4cc6ddf6a3b779b339ce2b1a9872955720e042a&X-Amz-SignedHeaders=host&x-id=GetObject', 0|zooto-backend | escapedCommand: '"/home/ubuntu/Zooto-Backend/node_modules/@ffprobe-installer/linux-x64/ffprobe" -v error -show_format -show_streams "https://zooto-event-recordings.s3.eu-west-1.amazonaws.com/65031acf9d7df4ff742127bd/2347081601461/be76abfbc443ab37c95c0fa15ef5ff42_65031acf9d7df4ff742127bd_%2B2347081601461_0.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAYOVAHGFKARIGALXN%2F20230919%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20230919T132249Z&X-Amz-Expires=900&X-Amz-Signature=ce200231059b40282b51f158b4cc6ddf6a3b779b339ce2b1a9872955720e042a&X-Amz-SignedHeaders=host&x-id=GetObject"', 0|zooto-backend | exitCode: undefined, 0|zooto-backend | signal: 'SIGSEGV', 0|zooto-backend | signalDescription: 'Segmentation fault', 0|zooto-backend | stdout: '', 0|zooto-backend | stderr: '', 0|zooto-backend | failed: true, 0|zooto-backend | timedOut: false, 0|zooto-backend | isCanceled: false, 0|zooto-backend | killed: false 0|zooto-backend | }
Hey guys!
Im using your package to get video duration after uploading on S3 Bucket. On my local computer, it
s working perfectly, but after releasing to Linux server, the whole app is crashing and Im getting error "TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined". If I comment import "//import {getVideoDurationInSeconds} from 'get-video-duration';" app is working again. Just can
t understand what`s problem
Hello!
When trying to run this piece of code, it works fine on my local machine.
const { getVideoDurationInSeconds } = require('get-video-duration')
getVideoDurationInSeconds('https://instagram.ffjr1-4.fna.fbcdn.net/v/t50.2886-16/131687230_388727058869326_3901901103341180755_n.mp4?_nc_ht=instagram.ffjr1-4.fna.fbcdn.net&_nc_cat=110&_nc_ohc=DO0V2EPdiqEAX-EbIwf&oe=5FE1FCD0&oh=8f8e0506f15cb4ac3766a0ec3606758e').then((duration) => {
console.log(duration)
})
However when trying to run this on a Remote Server running Ubuntu, I'm met with this error.
(node:97616) UnhandledPromiseRejectionWarning: Error: Command failed with exit code 1: /home/ubuntu/Whatsapp-Helper/node
_modules/@ffprobe-installer/linux-x64/ffprobe -v error -show_format -show_streams https://instagram.ffjr1-4.fna.fbcdn.net/
v/t50.2886-16/131687230_388727058869326_3901901103341180755_n.mp4?_nc_ht=instagram.ffjr1-4.fna.fbcdn.net&_nc_cat=110&_nc_o
hc=DO0V2EPdiqEAX-EbIwf&oe=5FE1FCD0&oh=8f8e0506f15cb4ac3766a0ec3606758e
https://instagram.ffjr1-4.fna.fbcdn.net/v/t50.2886-16/131687230_388727058869326_3901901103341180755_n.mp4?_nc_ht=instagram
.ffjr1-4.fna.fbcdn.net&_nc_cat=110&_nc_ohc=DO0V2EPdiqEAX-EbIwf&oe=5FE1FCD0&oh=8f8e0506f15cb4ac3766a0ec3606758e: Resource t
emporarily unavailable
at makeError (/home/ubuntu/Whatsapp-Helper/node_modules/execa/lib/error.js:59:11)
at handlePromise (/home/ubuntu/Whatsapp-Helper/node_modules/execa/index.js:114:26)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
(Usenode --trace-warnings ...
to show where the warning was created)
(node:97616) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing insid
e of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate
the node process on unhandled promise rejection, use the CLI flag--unhandled-rejections=strict
(see https://nodejs.org/
api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:97616) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections
that are not handled will terminate the Node.js process with a non-zero exit code.
I can't think of any other reason why this is showing up aside from having different OS. I've installed get-video-duration on both machines.
Thanks in advance
Hi,
I have tried using the module in Firebase Cloud Functions environment which is a normal Node.js environment but all three options of URL, file, and stream do not work.
Here are my errors:
Using the public URL:
{ Error: spawn ffprobe ENOENT at exports._errnoException (util.js:1020:11) at Process.ChildProcess._handle.onexit (internal/child_process.js:197:32) at onErrorNT (internal/child_process.js:376:16) at _combinedTickCallback (internal/process/next_tick.js:80:11) at process._tickDomainCallback (internal/process/next_tick.js:128:9) code: 'ENOENT', errno: 'ENOENT', syscall: 'spawn ffprobe', path: 'ffprobe', spawnargs: [ '-v', 'error', '-show_format', '-show_streams', 'https://storage.googleapis.com/adboard-dev.appspot.com/5HRuyysoMxe9Tb5vPLDbhEaHtkH2%2F-LAve5VogdAr4ZohU-DE%2FSampleVideo_1280x720_1mb.mp4?GoogleAccessId=firebase-adminsdk-3lthu@adboard-dev.iam.gserviceaccount.com&Expires=16447017600&Signature=cbhn%2BtY2%2FtvcRkvsFp1ywhHKiz%2FLfabfMk6HbD4TEGd%2Brf4njcMz1mQVf6H8nyulTBoRHIgC2uENFEPoEjtON6Um0Jb9P9jgikj6PdhS98m1sPDpTjMiFCTWk6ICjTI%2B%2BWuSVGgDX0tRuq3fADZABKaEcl3CEAI17DCVH98a40XttIDZqeqxIDu1iLi%2F8apQy44pAPJsmVR2dkYHk8Am8e7jIT1OnXG3adO34U3TNhsziPryIIpzo68QANENeieulvleic2BEi7KUhN1K8IxzJXxAfkt9RAFbdrwh%2FOpQ7zTGPRzTC3Vz2FnmKSXVtdKtmftg7BlEXrRr3D7ELJ53g%3D%3D' ], stdout: '', stderr: '', failed: true, signal: null, cmd: 'ffprobe -v error -show_format -show_streams https://storage.googleapis.com/adboard-dev.appspot.com/5HRuyysoMxe9Tb5vPLDbhEaHtkH2%2F-LAve5VogdAr4ZohU-DE%2FSampleVideo_1280x720_1mb.mp4?GoogleAccessId=firebase-adminsdk-3lthu@adboard-dev.iam.gserviceaccount.com&Expires=16447017600&Signature=cbhn%2BtY2%2FtvcRkvsFp1ywhHKiz%2FLfabfMk6HbD4TEGd%2Brf4njcMz1mQVf6H8nyulTBoRHIgC2uENFEPoEjtON6Um0Jb9P9jgikj6PdhS98m1sPDpTjMiFCTWk6ICjTI%2B%2BWuSVGgDX0tRuq3fADZABKaEcl3CEAI17DCVH98a40XttIDZqeqxIDu1iLi%2F8apQy44pAPJsmVR2dkYHk8Am8e7jIT1OnXG3adO34U3TNhsziPryIIpzo68QANENeieulvleic2BEi7KUhN1K8IxzJXxAfkt9RAFbdrwh%2FOpQ7zTGPRzTC3Vz2FnmKSXVtdKtmftg7BlEXrRr3D7ELJ53g%3D%3D', timedOut: false, killed: false }
Downloading the file then passing it:
{ Error: spawn ffprobe ENOENT at exports._errnoException (util.js:1020:11) at Process.ChildProcess._handle.onexit (internal/child_process.js:197:32) at onErrorNT (internal/child_process.js:376:16) at _combinedTickCallback (internal/process/next_tick.js:80:11) at process._tickDomainCallback (internal/process/next_tick.js:128:9) code: 'ENOENT', errno: 'ENOENT', syscall: 'spawn ffprobe', path: 'ffprobe', spawnargs: [ '-v', 'error', '-show_format', '-show_streams', '/tmp/SampleVideo_1280x720_1mb.mp4' ], stdout: '', stderr: '', failed: true, signal: null, cmd: 'ffprobe -v error -show_format -show_streams /tmp/SampleVideo_1280x720_1mb.mp4', timedOut: false, killed: false }
Finally, using file stream:
{ AssertionError: No duration found! at ffprobe.then (/user_code/node_modules/get-video-duration/index.js:34:3) at process._tickDomainCallback (internal/process/next_tick.js:135:7) name: 'AssertionError', actual: null, expected: true, operator: '==', message: 'No duration found!', generatedMessage: false }
I tried mp4 and avi videos of different sizes but with no success.
I made sure ffprobe is included in my package.json.
Thanks.
I'm working on an electron app that relies on getVideoDurationInSeconds
to get the duration of video files. In the dev packaged environment, everything works well, but after the app is built, this package can't seem to find the ffprobe.exe.
Here is the error:
Error: spawn C:PATH_TO_APP\resources\app.asar\node_modules\get-video-duration\node_modules\ffprobe-static\bin\win32\x64\ffprobe.exe ENOENT
at Process.ChildProcess._handle.onexit (internal/child_process.js:264)
at onErrorNT (internal/child_process.js:456)
at processTicksAndRejections (internal/process/task_queues.js:80)
Here is the setup:
"devDependencies": {
"electron": "^8.0.0",
"electron-builder": "^22.3.2",
"electron-packager": "^14.2.1"
},
"dependencies": {
"fix-webm-duration": "^1.0.0",
"get-video-duration": "^1.0.3",
"ps-list": "^6.3.0"
}
Thanks!
Can you return more information, such as dimension width and height
Is it possible to use this somehow so that we dont have to save the file to a disk before retrieving the duration? The use case is, the user uploads the video, and the server uploads it to an amazon s3 storage
A functional fix is updating ffprobe to the latest version
Edit: I should add, I'm running manjaro 64 bit
hey , i noticed that this libary is not working inside a asar archcive
Hi. I have been able to successfully use this library on Windows but on Ubuntu, I'm getting the follow error:
1|Message-Server | 2021-05-09T17:57:39: Error: Command failed with exit code 1: /Dev/node_modules/@ffprobe-installer/l inux-x64/ffprobe -v error -show_format -show_streams https://cdn.fbsbx.com/v/t59.3654-21/183098887_524357068578588_8345053379644033323_n.mp 4/audioclip-1620563256000-1649.mp4?_nc_cat=100&ccb=1-3&_nc_sid=7272a8&_nc_ohc=Ys1YiHg8JcMAX82ghZI&_nc_ht=cdn.fbsbx.com&oh=055b7559cce4efcac c5630e854936d47&oe=60995445 1|Message-Server | 2021-05-09T17:57:39: https://cdn.fbsbx.com/v/t59.3654-21/183098887_524357068578588_8345053379644033323_n.mp4/audioclip- 1620563256000-1649.mp4?_nc_cat=100&ccb=1-3&_nc_sid=7272a8&_nc_ohc=Ys1YiHg8JcMAX82ghZI&_nc_ht=cdn.fbsbx.com&oh=055b7559cce4efcacc5630e854936 d47&oe=60995445: Resource temporarily unavailable 1|Message-Server | 2021-05-09T17:57:39: at makeError (/Dev/node_modules/execa/lib/error.js:59:11) 1|Message-Server | 2021-05-09T17:57:39: at handlePromise (/Dev/node_modules/execa/index.js:114:26) 1|Message-Server | 2021-05-09T17:57:39: at processTicksAndRejections (internal/process/task_queues.js:93:5) { 1|Message-Server | 2021-05-09T17:57:39: shortMessage: 'Command failed with exit code 1: /Dev/node_modules/@ffprobe-i nstaller/linux-x64/ffprobe -v error -show_format -show_streams https://cdn.fbsbx.com/v/t59.3654-21/183098887_524357068578588_83450533796440 33323_n.mp4/audioclip-1620563256000-1649.mp4?_nc_cat=100&ccb=1-3&_nc_sid=7272a8&_nc_ohc=Ys1YiHg8JcMAX82ghZI&_nc_ht=cdn.fbsbx.com&oh=055b755 9cce4efcacc5630e854936d47&oe=60995445', 1|Message-Server | 2021-05-09T17:57:39: command: '/Dev/node_modules/@ffprobe-installer/linux-x64/ffprobe -v error -s how_format -show_streams https://cdn.fbsbx.com/v/t59.3654-21/183098887_524357068578588_8345053379644033323_n.mp4/audioclip-1620563256000-16 49.mp4?_nc_cat=100&ccb=1-3&_nc_sid=7272a8&_nc_ohc=Ys1YiHg8JcMAX82ghZI&_nc_ht=cdn.fbsbx.com&oh=055b7559cce4efcacc5630e854936d47&oe=60995445' , 1|Message-Server | 2021-05-09T17:57:39: exitCode: 1, 1|Message-Server | 2021-05-09T17:57:39: signal: undefined, 1|Message-Server | 2021-05-09T17:57:39: signalDescription: undefined, 1|Message-Server | 2021-05-09T17:57:39: stdout: '', 1|Message-Server | 2021-05-09T17:57:39: stderr: 'https://cdn.fbsbx.com/v/t59.3654-21/183098887_524357068578588_8345053379644033323_n.mp4 /audioclip-1620563256000-1649.mp4?_nc_cat=100&ccb=1-3&_nc_sid=7272a8&_nc_ohc=Ys1YiHg8JcMAX82ghZI&_nc_ht=cdn.fbsbx.com&oh=055b7559cce4efcacc 5630e854936d47&oe=60995445: Resource temporarily unavailable', 1|Message-Server | 2021-05-09T17:57:39: failed: true, 1|Message-Server | 2021-05-09T17:57:39: timedOut: false, 1|Message-Server | 2021-05-09T17:57:39: isCanceled: false, 1|Message-Server | 2021-05-09T17:57:39: killed: false 1|Message-Server | 2021-05-09T17:57:39: }
Running ffmpeg -version
gives the following output:
ffmpeg version 3.4.8-0ubuntu0.2 Copyright (c) 2000-2020 the FFmpeg developers built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04) configuration: --prefix=/usr --extra-version=0ubuntu0.2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared libavutil 55. 78.100 / 55. 78.100 libavcodec 57.107.100 / 57.107.100 libavformat 57. 83.100 / 57. 83.100 libavdevice 57. 10.100 / 57. 10.100 libavfilter 6.107.100 / 6.107.100 libavresample 3. 7. 0 / 3. 7. 0 libswscale 4. 8.100 / 4. 8.100 libswresample 2. 9.100 / 2. 9.100 libpostproc 54. 7.100 / 54. 7.100
The url is valid. Could you please help me out.
Hello,
i used
await getVideoDurationInSeconds(createReadStream()),
on local computer MacOs works
but when I will use function on docker ( Digitial Ocean ) I always receive
ERROR [ExceptionsHandler] No duration found!
I must install some lib etc in Docker ?
Hey , please update your FFProbe installer dependency it now supports raspberrypi
this could be an issue with dependencies not up to date, or within the ffprobe package itself. I am running into an error saying Could not find ffprobe executable
. Not sure if this has been addressed yet or I am the first to tell you.
is this only run on node js not in a browser ?
Trying get-video-duration instead of get-audio-duration, reading the error I found the issue was inside ffprobe-installer both the npm3Path and npm2Path const used __dirname, I replaced them with './' and the issue was fixed
Hi!! It is possible to run this module in Angular?
I am trying to do it but I can't. If it is possible, can you write an example
Thanks!
Hello, is there a way to take the duration of a youtube video ?
getDuration('https://www.youtube.com/watch?v=IDVIDEO').then((duration) => { console.log(duration); });
like that ?
thank you.
Hello,
I notice some WebM videos don't have durations and it looks like common issue with WebM
https://www.npmjs.com/package/webm-duration-fix
Can you embedded support to WebM videos in get-video-duration
?
This library is great!
I was just wondering if there was a way to pass in 2, 3, or 55 URLS at a time to speed up the process at all.
So i am running a Promise.All() on a bunch of URLs right now, and sometimes, 100% of them come back correct, but occasionally, the odd one fails with this edited error:
{
"code": 1,
"stdout": "",
"stderr": "MY_FILE.mp4: Unknown error\r\n",
"failed": true,
"signal": null,
"cmd": "path\\to\\project\\node_modules\\ffprobe-static\\bin\\win32\\x64\\ffprobe.exe -v error -show_format -show_streams
MY_FILE.mp4",
"timedOut": false,
"killed": false
}
I was wondering if there was a way I could get more detail about what went wrong, and if it was anything on my end.
hello and thank you for this package
please make a function for get video length in milisecond its usable sometime
thanks
"shortMessage": "Command failed with exit code 1: /app/node_modules/@ffprobe-installer/linux-x64/ffprobe -v error -show_format -show_streams
This is the error message I get on AWS ECS when I try to get the duration of the video from the URL. locally, it works fine, I only encounter this issue on AWS.
This is the one of the video url-s on which it gives me an error (I don't think URL has anything to do with this error, since locally it works fine) : https://redirector.googlevideo.com/videoplayback?expire=1658275149&ei=7fDWYunHFI2D6dsP9--SeA&ip=168.119.239.75&id=o-AFrlD5L-GOVTro5bPts6zoH6YUzO5ZDbxjN3hy3GgODC&itag=18&source=youtube&requiressl=yes&mh=CV&mm=31%2C26&mn=sn-4g5e6nsd%2Csn-h0jelnes&ms=au%2Conr&mv=m&mvi=5&pl=25&initcwndbps=350000&vprv=1&mime=video%2Fmp4&gir=yes&clen=4442673&ratebypass=yes&dur=60.032&lmt=1658161543781145&mt=1658252478&fvip=2&fexp=24001373%2C24007246&c=ANDROID&txp=6310224&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cratebypass%2Cdur%2Clmt&sig=AOq0QJ8wRQIgCxtgMjIOHf-JCbLTr0XIddPeU2Iv994RkGu6L_gwpG8CIQCWeC33rs0lqpiPyVqBMMIF2YrAiH5R14LrFnla-0hWBA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIhAKnSbLoD5_DmzAoRzu9YCcSCm971ZgpwGP4deV3Y_PIvAiBrlOGi1IzlDKhghXadp7Ub506lFcWjzxa2XvdGvJgn2g%3D%3D&utmg=ytap1_rQjSvbzXBeA
Do you have any ideas why this happens ? Thanks !
Hi! Do you have plans to support Apple Silicon?
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.