Hey everyone, creator here. I had planned on launching here at some point in the future, but someone beat me to it.
The motivation behind creating Mastershot was because when searching for a simple free video editor to use, they always hit me with either a low-res export or heavily watermarked or an exorbitant subscription fee. Mastershot is able to be free because it uses an WASM port of Ffmpeg.
Currently I only support chrome because of a weird bug in FF that is causing the ffmpeg port to break. I’m working on an approach to make Mastershot work cross-browser the same way that the video trimmer and audio extractor tools work.
I'm not a lawyer, so understanding the exact implications of licensing is beyond me. My thought process behind this is that there are other (even commercial) services offering web-based video editors that use ffmpeg and are closed source. In any case I completely isolated the renderer into an iframe so in theory I could allow people to upload their own version ffmpeg.wasm if they were so inclined to.
If the commercial services aren't distributing ffmpeg, for instance they are running on their own servers, then they are only using, but not distributing ffmpeg, and aren't under an obligation to share source code.
Since you are distributing ffmpeg (as a wasm module), you are under obligations to give access to source code that do not apply to services that merely use ffmpeg within their own organization (even if for a service provided to third parties).
One typical work around for distribution of ffmpeg in a product is to simply use a standalone ffmpeg executable and provide all the source to the ffmpeg executable.
A wasm module is more akin to a library than a standalone executable and likely under stronger obligations. If you are only using LGPL code (it depends on how you compiled ffmpeg [See https://www.ffmpeg.org/legal.html -- "Compile FFmpeg without "--enable-gpl" and without "--enable-nonfree" ), giving access to only the ffmpeg code you used to build the module (and any modifications) would likely suffice for the source code obligation. If you are including any GPL code (because you didn't compile with the options needed to ensure only LGPL code is used), your entire project likely falls under GPL and you would probably need to share the source for the entire project to be compliant.
If another service is using ffmpeg as a wasm without providing a means of accessing the source code (to the wasm module if only using LGPL code, or the entire project if using any GPL code), they (too) are likely in violation of the ffmpeg license copyright and could be sued. Companies and projects can fly under the radar for some time before this happens, but it doesn't mean they are operating legally and will never be sued.
Thanks for your in depth explanation. The current structure for me is I have the main app which is responsible for previewing and making the edits to videos. This project does not include FFmpeg. I have a separate project which is the renderer. The renderer is loaded in a separate iframe which loads ffmpeg.wasm. Would this be separate enough that upon request I would only have to open source the project which includes ffmpeg.wasm?
That’s a question for courts to decide. It hangs on what interpretation courts assign to “derivative work”.
There are claims both for and against this being a derivative work; for “standalone” use, the test is usually something like “if you didn’t use ffmpeg, would the product be significantly less useful?”
MySQL used to claim that including MySQL.exe in a product, even if you don’t link to it, makes that product a derivative work. The generally accepted wisdom is that it’s not.
Sounds reasonable. Just heads up that you may need to face those implications sooner or later. To the best of my knowledge (and IANAL, but I have worked extensively with lawyers on similar questions), if your ffmpeg.wasm contains any GPL code, you are obligated to provide the complete "original" source code of the product on request to anyone to whom you've distributed the compiled version.
You may want to check with a lawyer, and/or read the ffmpeg FAQ about that, and/or recompile with --disable-gpl --disable-nonfree - and that only brings you to the point where you need to let people use their own ffmpeg.wasm (and not be obligated to provide your source code).
https://www.ffmpeg.org/legal.html is actually required reading for anyone who uses ffmpeg in a product, commercial, free/libre or free/gratis.
I have an acquaintance who's a lawyer specializing in these issues, and he's usually called in to put out (legal) fires because people ignored open source licenses in commercial products. Copyright infringement laws are crazy complicated and in many ways incompatible with the modern ways of software, but they are what they are, and must be considered.
Are there no cookies? Some information about you might be interesting for those who don't want to upload on a site without knowing what they're getting into...
It saves your project files in the account. I’d prefer they use Chrome’s new file system API or just allow download/upload of save files, so that projects don’t need an account.
The video trimmer and mp3 extractor don’t require accounts.
Compare this with Subtitle Horse [0], a fantastic web-based subtitles editor that loads user's video to the browser storage (I guess? it certainly predates the file system access api), and does not require an account.
Yes subtitle horse is a lesser known hero for video accessibility. Been around a long time, I remember integrating the old flash based version with a video app almost a decade ago!
It uses ffmpeg (compiled to WASM) and currently only Chromium browsers support SharedArrayBuffers.
SAFs were disabled on all major browsers after the Spectre exploit iirc. Slowly but steadily they’ll patch and bring the feature back, and it’ll automatically be compatible with those browsers then.
Edit: Apparently Firefox does have SharedArrayBuffer support[0], but needs special headers.
cool. this idea came up when i saw your website. Peertube would be much better if it had on the fly editing tools like yours. They could build from scratch but that's not really efficient.
If you do go GPL or something, please come to peertube github. the software needs something like this
@author create a workflow with temporary account, because having to register without having done anything is completely unnecessary and a anti-pattern. The product is about editing videos, the prompt to register should be at the point there's something to save not as the first thing.
I agree with your reasoning, the issue is that it requires a fair amount of work to restructure the authentication flow. Additionally, I would have to preserve the project and migrate it to the newly created account. At the moment I have higher priority usability issues that I'm working through, but I will get to it at some point.
This looks pretty cool! I've been using Kapwing for similar purposes (https://www.kapwing.com/) and this reminds me of Kapwing in its earlier days. Definitely a bit basic without all the effects and overlays, but looks like a nice MVP.
As someone who used to run my own video sharing site in the 2000s, it's super cool seeing how videos can just render so quickly in my browser and be moved around.
scrolled up and down twice looking for 'privacy policy' and 'about us / contact'
Did notice third time scroll that look that a heading for 'security' seemed to explain..
contact and about us so as to see jurisdiction / trust/.
I guess this could be ported as a web app / home screen icon thing?
I'd love to connect this with mediapress/buddypress/wp
and if I could find a way to push a list to a self hosted server app that would run a browser on the server to pull via youtubedl and spit out some mp3s to collect and listen later.
I hadn’t expected this to blow up as much as it had so I hadn’t polished up the homepage yet. My Twitter is @JacobBeckerman if you want to get it touch.
Almost gave up trying when I finally realized I had to click that tiny green plus button, which only appears on hover. Looking promising, with lots of room for usability improvements.
It’s a webasm compiled ffmpeg that does all the heavy lifting. Everything is client side. Server is just sending the webpage and saving metadata for the project files. Pretty easy to host something like this at a $1/1k mau level.
The final render is performed in the browser. I’m very much a fan of offloading computationally expensive take to the client so that I can provide this service for free.
No, but it does need to be distributed in such a way that users can replace the ffmpeg provided with the product, with their own version of ffmpeg (and of course, provide a source from which the distributed ffmpeg can be built, unless it’s already configure/make/make-install upstream. Some say even if already upstream)
But also, depending on codecs, it might be GPL; e.g. x264 itself is GPLd as are some other codecs. There are BSD licensed codecs. As ffmpeg relies on many other projects to provide codecs, it’s on a codec by codec basis - though the original configure makes it easy to disable all GPL upstrrams.
The wasm port of ffmpeg that I'm using isn't modified so there's nothing for me to open source. Once I finalize my modifications of the library, I'll be open sourcing it.
a similar open source tool kit is definitely missing in the general video content creation landscape
I've found that the open source AviDemux (and Handbrake) meets most of my basic video editing needs. I also use FFMpeg to automate some tasks (like adding subtitles and metadata to many videos). OBS Studio is another open source software used by many YouTubers and streamers.
When I was looking around to see if my idea of a client-side video editor was even possible, I found Clipchamp. Since they were able to do it, I knew it was possible and I got started immediately afterwards.
Serious question: Are you interested in selling Mastershot? I'd love to hear more about you and the evolution of the app. If you're interested: tyler at failure.inc
I feel like having a Pricing link in the header would indicate that it's not free. The "100% free" part is in bold and there is just a few lines of text.
The motivation behind creating Mastershot was because when searching for a simple free video editor to use, they always hit me with either a low-res export or heavily watermarked or an exorbitant subscription fee. Mastershot is able to be free because it uses an WASM port of Ffmpeg.
Currently I only support chrome because of a weird bug in FF that is causing the ffmpeg port to break. I’m working on an approach to make Mastershot work cross-browser the same way that the video trimmer and audio extractor tools work.