WASM + React... Easily build video editing software with JS & FFmpeg

  Рет қаралды 214,729

Fireship

Fireship

3 жыл бұрын

Use Web Assembly to build an app that converts video files to GIF (using FFmpeg), entirely from a frontend React JavaScript application. fireship.io/lessons/wasm-vide...
Source Code: github.com/fireship-io/react-...
FFmpeg.wasm ffmpegwasm.github.io/
#wasm #webdev #tutorial
Install the quiz app 🤓
iOS itunes.apple.com/us/app/fires...
Android play.google.com/store/apps/de...
Upgrade to Fireship PRO at fireship.io/pro
Use code lORhwXd2 for 25% off your first payment.
My VS Code Theme
- Atom One Dark
- vscode-icons
- Fira Code Font

Пікірлер: 275
@jakobarsement8266
@jakobarsement8266 2 жыл бұрын
Been watching these for about a year now and dude, your videos are tremendous. You are a tremendous instructor. You keep it cutting-edge, concise, and super informative. Thank you.
@thomasjardanedeoliveirabou9993
@thomasjardanedeoliveirabou9993 2 жыл бұрын
Sadly the Source Code doesn't work anymore because of the Spectre Vuneability in modern browsers. They disabled SharedArrayBuffer which was essential for this to work (for some reason, i am not an expert on this). So before you try this, try to find a more recent video =D
@Vishnu-oo4gh
@Vishnu-oo4gh Жыл бұрын
@@yotubecreators47 wow thank you!
@batmanatkinson1188
@batmanatkinson1188 Жыл бұрын
is it also disabled on Apple M1?
@ABDTalk1
@ABDTalk1 Жыл бұрын
@@yotubecreators47JavaFX is so good though
@BelugaSam
@BelugaSam Жыл бұрын
@@yotubecreators47 is their any solution for vue too?
@irahazda
@irahazda 7 ай бұрын
Thank you man. Saved my time.
@Apoorvpandey
@Apoorvpandey 2 жыл бұрын
I ran into these errors: 1. ffmpeg was not loading in browser: Soln: downgrade ffmpeg version to 0.9.0 2. SharedArray buffer error: Soln: Run chrome wuth this flag "chrome --enable-features=SharedArrayBuffer "
@acollierr17
@acollierr17 3 жыл бұрын
Been looking forward to this, Jeff! Definitely going to expand on this sometime in the future on my own project. Thanks!
@edwincarlsson9014
@edwincarlsson9014 3 жыл бұрын
I’ve been looking forward to this!
@Fireship
@Fireship 3 жыл бұрын
Me too, but more WASM content on coming soon :)
@DrSwad
@DrSwad 3 жыл бұрын
Awesome work man
@mikemartire1612
@mikemartire1612 3 жыл бұрын
I definitely asked for this video and you delivered, thanks a bunch! Great video as always Jeff, very very useful
@joaovaz3473
@joaovaz3473 3 жыл бұрын
What people see: WASM allows one to run server tasks on the client What I see: serverless SQL injection
@jorgekunrath1016
@jorgekunrath1016 3 жыл бұрын
not sure if that's a joke or a real thing because i don't have very much knowledge on the subject, so, honest question: there's a point on do that? i mean you could hack it (could u?), but it will be only in your browser because nothing was sended to the server, right? so...
@joaovaz3473
@joaovaz3473 3 жыл бұрын
@@jorgekunrath1016 it was originally a joke. But now, re-thinking about it... you've got a point!
@jorgekunrath1016
@jorgekunrath1016 3 жыл бұрын
@@joaovaz3473 cool joke tho and thanks ^^
@Fireship
@Fireship 3 жыл бұрын
Good way to practice your hacking skills before taking them to a real server.
@myxmad800
@myxmad800 3 жыл бұрын
@@Fireship buddy what file icon theme do you use pls state it
@miguel_bogota
@miguel_bogota 3 жыл бұрын
I don't know how you make this videos so interesting always!! Thank you, I think an AssemblyScript video will also be awesome.
@CodeWithAndrea
@CodeWithAndrea 3 жыл бұрын
Awesome video as usual! Really cool to see how to use all these things together!
@YahirTrejo
@YahirTrejo 3 жыл бұрын
Man that was amazingly simple, I was scared of web assembly but I might start learning now. Also unrelated but have you considered doing a react course?
@Fireship
@Fireship 3 жыл бұрын
Yes, working on a React-Firebase course :)
@kordoulakis
@kordoulakis 3 жыл бұрын
@@Fireship It'll be the first time I've bought a course then
@YahirTrejo
@YahirTrejo 3 жыл бұрын
@@Fireship Great! Looking forward to it!
@wizamit
@wizamit 3 жыл бұрын
This is awesome. Thank you for this great introduction to WA ❤
@yampolskie
@yampolskie 3 жыл бұрын
It seemed tough to build but you made it look so easy!
@OBLIVIOUSKARI
@OBLIVIOUSKARI 3 жыл бұрын
Omg I’m so pumped for the rust web assembly video. I am a rust dev and would like to get some benefit from it on the web
@prashoonbhattacharjee8211
@prashoonbhattacharjee8211 3 жыл бұрын
This tutorial is fantastic!! Got a lot of value from this tutorial!!
@NicolaiWeitkemper
@NicolaiWeitkemper 3 жыл бұрын
Amazing! I can't wait to see more WASM content.
@davidhusicka8440
@davidhusicka8440 3 жыл бұрын
Really excited for the rust video. I could port my CLI app to web if you keep on your promise. Amazing as usual! Keep it up!
@jessejordan8569
@jessejordan8569 3 жыл бұрын
Great stuff as always. Still can't believe Nathan Fielder is this knowledgeable on web dev!
@Monogrammaton
@Monogrammaton Жыл бұрын
omg
@aminehl6025
@aminehl6025 Жыл бұрын
Thank you very much
@MrChernicharo
@MrChernicharo 3 жыл бұрын
Amazing! More videos on WebAssembly please!
@ridl27
@ridl27 3 жыл бұрын
great stuff man, ty. now its really open my mind for WASM :D
@jaforewit
@jaforewit 3 жыл бұрын
In your Rust to WASM video, I'd love to see some sort of visuals in rust port over to visuals on the browser
@WrongAkram
@WrongAkram 3 жыл бұрын
This is sweet! I was thinking about using wasm to try to make a video editing tool on the web.
@parikshitthale7708
@parikshitthale7708 3 жыл бұрын
How about Intro to AssemblyScript 🔥🔥
@amanraj1608
@amanraj1608 3 жыл бұрын
Finally most awaited video 🌟✨
@rubenpoppe
@rubenpoppe 3 жыл бұрын
Hi Jeff, could you do a video on how to use 'raw' wasm code? In this video you use a wrapper javascript library.
@HenokWehibe
@HenokWehibe 2 жыл бұрын
Another really useful video, will try it with my open alpr project great work again.
@HackUniversity
@HackUniversity 3 жыл бұрын
Wow! This is simply amazing! Everyone should see this! :)
@user-eb4jr3qr5h
@user-eb4jr3qr5h Жыл бұрын
Just what I was looking for 🔥
@theseriouslook
@theseriouslook 3 жыл бұрын
I am fan of your way of telling things as they are very easy
@ChunkyChest
@ChunkyChest 2 жыл бұрын
Thanks for this!! can't wait to dive wasm :D
@prashoonbhattacharjee8211
@prashoonbhattacharjee8211 3 жыл бұрын
Pumped to make this project!!
@DodaGarcia
@DodaGarcia 3 жыл бұрын
Oh wow this one went way over my head
@djcardwellai
@djcardwellai 2 жыл бұрын
These videos are gold. Thank you so much
@vietnamnguyen369
@vietnamnguyen369 3 жыл бұрын
That's what I am looking forward. I am also trying to develop custom rust code and covert it to WASM. That's cool.
@ShafterPlay
@ShafterPlay 3 жыл бұрын
Your videos are sooooo amazing I can't even tell
@TheRanguna
@TheRanguna 3 жыл бұрын
Awesome video, so incredibly simple. Now I'm going to read more in depth about how to create these Web assembly files and bind them to javascript. Can't wait for the rust to wasm video!! Do you know if FS will conflict with other tabs accessing the same file ? This could be a problem, even two tabs overwriting the same place in memory. But I'm guessing this only runs in the current context of the tab. Another question, can we access the whole file system with wasm ? I'm not really sure what the `video` var contained, but could we somehow build it so we could access any file in the system or is the browser sandboxing this ? Thanks!!
@uniqhnd23
@uniqhnd23 3 жыл бұрын
Really good music in the beginning 👌
@aryanmn1569
@aryanmn1569 2 жыл бұрын
u r hero of making things look simple
@omegaomar29
@omegaomar29 3 жыл бұрын
Amazing, WASM it's so powerful, i'll try this example.
@daksmemes7428
@daksmemes7428 3 жыл бұрын
excited for web assembly
@DaggieBlanqx
@DaggieBlanqx 3 жыл бұрын
Wow! Thank you!
@fevicoI
@fevicoI 3 жыл бұрын
We are about to enter an age, when there would be no OS. Just JS & Chrome. Your OS would be Chrome and everything else loaded in WASM. SMFH.
@MatthewTaylor86
@MatthewTaylor86 3 жыл бұрын
Wait until you hear about Chromebooks 🤣
@fevicoI
@fevicoI 3 жыл бұрын
@@MatthewTaylor86 those are awful
@iyxan2340
@iyxan2340 3 жыл бұрын
Linux, WASM edition :p
@fevicoI
@fevicoI 3 жыл бұрын
@@iyxan2340 Chrome-book would literally be Wasmbook
@nhat4359
@nhat4359 3 жыл бұрын
For some people, Windows is already just a bootloader for Chrome
@aaron32190
@aaron32190 3 жыл бұрын
Would love to see a vid about assembly script :)
@AB3D-tutorials
@AB3D-tutorials 3 жыл бұрын
This is really cool!
@jaimerojas6578
@jaimerojas6578 3 жыл бұрын
Well, that was pretty cool!
@pro-nav
@pro-nav 3 жыл бұрын
coming first is really exciting
@SpaghettDev
@SpaghettDev 3 жыл бұрын
Back at it again!
@dibaliba
@dibaliba 3 жыл бұрын
🔥🚀 I have press the like button when I get into this page at the very first time, coz there is no chance this video will have crap content. 未看先讚啦!!!
@captainlennyjapan27
@captainlennyjapan27 2 жыл бұрын
Can someone please help? I cannot move forward due to SharedBufferArray undefined error...
@samiurrahmanmukul
@samiurrahmanmukul 2 жыл бұрын
I faced same issue. How can i solved this
@sumukhakb2701
@sumukhakb2701 3 жыл бұрын
Awesome tutorial . Please make a video converter using WASM and ffmpeg
@Abhinavkmr
@Abhinavkmr 3 жыл бұрын
Thank You so much!!!
@amoldalwai3961
@amoldalwai3961 3 жыл бұрын
3:53 great way to add a preloader ,never thought of it that way
@Fireship
@Fireship 3 жыл бұрын
You can also use React Suspense for things like that, but that's a topic for another video...
@DrSwad
@DrSwad 3 жыл бұрын
You might also want to take a look at swr.vercel.app/. It deals with fetching data while showing a loading state or optionally showing already cached data while the data is being updated. It also supports infinite scrolling and react-native. Not exactly related to this video's scenario, but you might find it cool.
@amoldalwai3961
@amoldalwai3961 3 жыл бұрын
@@Fireship thanks ...I made a react app that actually allows you to watch movies and web series online. amoldalwai.github.io/watch-any-movie/ Can I get your thoughts on it?
@dj_256
@dj_256 3 ай бұрын
Dude just accomplished my dream tool in under 8 minutes lmao
@rand0mtv660
@rand0mtv660 3 жыл бұрын
Hmm you using React more and more? I always thought of you as an Angular guy. It's good to see that you are open to everything.
@CodingUnited
@CodingUnited 3 жыл бұрын
How 'bout a 2d Rust game compiled to WASM? The game could be a flappy bird clone.
@ursochurrasqueira
@ursochurrasqueira 3 жыл бұрын
up, that would be awesome
@martinmaldonado4923
@martinmaldonado4923 3 жыл бұрын
You're a legend!
@manvendrasingh4556
@manvendrasingh4556 8 ай бұрын
please update the wasm changed some functions and features like i can't able to use createFFmpeg
@aspiringpro
@aspiringpro 3 жыл бұрын
I want to be able to load a video, draw on that video(using canvas?), and then save it as a new file with the drawing visible. I also want to be able to have some sort of trim controls. Is something like this possible?
@sridharkatta3461
@sridharkatta3461 3 жыл бұрын
May be in future plan an intro to rust and how we can write web assembly code using rust, I am really interested in those kind of videos.
@Daimyo7
@Daimyo7 3 жыл бұрын
Going to be honest here I was looking at the same technology about 2 years ago. I worked on a transcoding project with multiple video streaming m3 u8, vast advertising.
@brucewayne2480
@brucewayne2480 3 жыл бұрын
Amazing !!! It inspires me to code a simple app to gain some money 😛 (I ve never done it and dont know how to monetize something like that aside ads)
@ikezedev
@ikezedev 3 жыл бұрын
Great video as always. I heard you say Rust 😍😋
@TheEtsgp1
@TheEtsgp1 2 жыл бұрын
An idea I would like to see is how to handle editing videos and how to store and retrieve those videos in the local file system in react for different users e.g user 1 and user 2? sadly there is not very many resources showing how to work with react and video media
@rishabhanand4270
@rishabhanand4270 3 жыл бұрын
Know any good libraries that would be great for having their wasm counterparts? Ffmpeg is one, game engines are another, what else? Also what else can you do with wasm, can you run sockets, etc? Would love to make browser in a browser
@jamesxu4538
@jamesxu4538 3 жыл бұрын
Oh I've watched a video about the chopped truck. THe bridge was elevated, but still choppin the trucks
@nithinchinni
@nithinchinni 2 жыл бұрын
Can you fix the codebase that you shared in GIT. When I tried to run it, it throws an error: ffmpeg-core.js:22 Uncaught (in promise) ReferenceError: SharedArrayBuffer is not defined
@PTM1008
@PTM1008 3 жыл бұрын
Next level stuff
@malikmouhiidine9828
@malikmouhiidine9828 3 жыл бұрын
Please do a full course about webAssembly!
@andor1904
@andor1904 3 жыл бұрын
Awesome
@OBLIVIOUSKARI
@OBLIVIOUSKARI 3 жыл бұрын
Hey it took me a long time to figure out how to configure google and fb sign in with firebase on react native expo. Maybe if you could help others with it would be nice, or even do a full stack react native video on firebase
@timkelly9886
@timkelly9886 2 жыл бұрын
Hey Jeff, are you still planning to create the Rust to WASM tutorial? That would be super cool
@JeremyChone
@JeremyChone 3 жыл бұрын
Good vid. Curious to know the licensing restriction for this type of "distribution."
@katech6020
@katech6020 3 жыл бұрын
FFMPEG is a FOSS tool, so it is not a problem in this case. but in other cases, I get what do you mean
@nadico5740
@nadico5740 2 жыл бұрын
Hi, great video Can I use this inside a webWorker?
@Iglum
@Iglum 3 жыл бұрын
FFmpeg is my favorite program
@Janman81
@Janman81 3 жыл бұрын
Could this be used to record an animation in the client's browser given some pixel coordinates and dimensions, and let them save the output as an mp4?
@DFPercush
@DFPercush 3 жыл бұрын
Probably. developer.mozilla.org/en-US/docs/Web/API/Screen_Capture_API/Using_Screen_Capture There's also a package called html2canvas but I think that just re-renders parts of the DOM, rather than actually capturing the display window.
@thanhphongtran2263
@thanhphongtran2263 3 жыл бұрын
can you make a video turorial how to make a video trim function with react and ffmpeg?? please
@tippy_
@tippy_ 3 жыл бұрын
slowly and slowly wasm is starting to tickle my curisoity
@NicoZadeh
@NicoZadeh 3 жыл бұрын
What theme are you using on the code editor?
@VeryBlueBot
@VeryBlueBot 3 жыл бұрын
thanks very useful
@Damfler
@Damfler 3 жыл бұрын
Hi, I am interested and want to shoot in the same format as you, I would like to ask if you can take these lectures and translate them into my native Russian, with a note in the video that the original video is yours and leave links to your channel?
@imadharile2151
@imadharile2151 3 жыл бұрын
hi I want to ask a question about using FFmpeg library with javascript and wasm is this can be work for me
@supremelizard946
@supremelizard946 2 жыл бұрын
If you use youtube-dl or one of the forks you can go from a source video straight to a gif I have a personal bash script that does that for me
@nathandaven
@nathandaven 3 жыл бұрын
Webassembly is so crazy
@vaxo2210
@vaxo2210 3 жыл бұрын
Can you do a video on the web assembly file system?
@gofudgeyourselves9024
@gofudgeyourselves9024 3 жыл бұрын
Which framework you will be using for Rust WA?
@kevinbatdorf
@kevinbatdorf 2 жыл бұрын
Where's the rust course mentioned at the end?
@albertbennett6290
@albertbennett6290 3 жыл бұрын
Weird request, but can we have Reasonml in 100 seconds? Your videos are great by the way!
@alejkun4923
@alejkun4923 3 жыл бұрын
Idea: Add Tensorflow to have Text hovering over tracked objects
@keteremillpario
@keteremillpario 3 жыл бұрын
It would be interesting to see how you deploy this app on the web. One aspect I'm oblivious is how to bunddle everything up. Since you said that WASM binary it's a pretty large file, how do you give that to the client? I mean the ffmpeg object is already there, is the .load() method that brings it down to the computer client or the client already downloaded it? Sorry if I'm confusing some concepts here.
@jorgekunrath1016
@jorgekunrath1016 3 жыл бұрын
I guess that FFMPEG does it in the background with .load() (2:58). Or the files already was bundled in the application, but not really downloaded and that function did that, but he mention CDN so not sure this part got me too
@keteremillpario
@keteremillpario 3 жыл бұрын
​@@jorgekunrath1016 indeed, I took a look at the documentation. What's bundled and sended to the user is always a javascript bundle. From there, once in the client enviroment, the script triggers the method .load() (this is an API call that downloads ffmpeg-core.js from a CDN - the file occupies arround 25MB! That's the reason you trigger load() from the client with an async function). Afterwards the method instantiate a .wasm code (or session), all in the browser.
@jorgekunrath1016
@jorgekunrath1016 3 жыл бұрын
@@keteremillpario wow thats cool, thanks for share ^^
@tuananhngyen2985
@tuananhngyen2985 2 жыл бұрын
i am wondering how to get the GIF file after being converted, could you please you explain this in details ?
@nadawhoever
@nadawhoever 2 жыл бұрын
I cloned the repo and it gave me this error "SharedArrayBuffer is not defined"
@bickbalsy
@bickbalsy 3 жыл бұрын
Love it
@surbhigoel7062
@surbhigoel7062 2 жыл бұрын
not working on crome v92....can you suggest how to set cors?
@poopoo888888
@poopoo888888 2 ай бұрын
Very valuable content! Thank you very much!
@fevicoI
@fevicoI 3 жыл бұрын
Uncaught TypeError: Failed to execute 'importScripts' on 'WorkerGlobalScope': This document requires 'TrustedScriptURL' assignment. Been getting this error. Any idea why?
@gogoikabir
@gogoikabir 3 жыл бұрын
🔥
@tegaogheneovo5881
@tegaogheneovo5881 2 жыл бұрын
hey, hey thank you , i mean it ...sensei🤗😘😘😘😁 yah i need this, download
@justafreak15able
@justafreak15able 3 жыл бұрын
Why did you choose snowpack recently?
@JustCode39
@JustCode39 3 жыл бұрын
noice!
An introduction to WebAssembly
25:23
Coding Tech
Рет қаралды 185 М.
Glow Stick Secret (part 2) 😱 #shorts
00:33
Mr DegrEE
Рет қаралды 23 МЛН
Айттыңба - істе ! | Synyptas 3 | 7 серия
21:55
kak budto
Рет қаралды 1,6 МЛН
I PEELED OFF THE CARDBOARD WATERMELON!#asmr
00:56
HAYATAKU はやたく
Рет қаралды 23 МЛН
The Truth about Rust/WebAssembly Performance
29:47
Greg Johnston
Рет қаралды 167 М.
Reacting to Controversial Opinions of Software Engineers
9:18
Fireship
Рет қаралды 1,9 МЛН
New Wasm Platform And Standard WASIX??
10:27
ThePrimeTime
Рет қаралды 35 М.
10 regrets of experienced programmers
8:16
Fireship
Рет қаралды 798 М.
WebAssembly in React | Use C++ in React
12:12
AVDojo
Рет қаралды 1,5 М.
100+ Web Development Things you Should Know
13:18
Fireship
Рет қаралды 1,4 МЛН
WASM is Awesome! Explained with Examples | Ft Docker
13:43
ByteMonk
Рет қаралды 4,2 М.
Why WebAssembly is the future of Web development
7:33
ROULZ
Рет қаралды 179 М.
Any Sound & Call Recording Option Amazing Keypad Mobile 📱
0:48
Tech Official
Рет қаралды 325 М.
Apple ХОЧЕТ, чтобы iPhone ЛОМАЛИСЬ чаще?
0:47
ÉЖИ АКСЁНОВ
Рет қаралды 500 М.
Вы поможете украсть ваш iPhone
0:56
Romancev768
Рет қаралды 396 М.
APPLE УБИЛА ЕГО - iMac 27 5K
19:34
ЗЕ МАККЕРС
Рет қаралды 83 М.
Купите ЭТОТ БЮДЖЕТНИК вместо флагманов от Samsung, Xiaomi и Apple!
13:03
Thebox - о технике и гаджетах
Рет қаралды 33 М.