162 karma · joined December 15, 2011
It took a bit of trial and error to see which versions of the different libraries and build tools work together.
.mkv files are not enabled in the file picker, if I select one anyway it loads, but the export hangs
hevc .mp4 loads, but the exported video is all black
(though as I am working on a similar product I am aware that handling all the codecs is quite a bit more painful than it first seems)
This is what I did in my similar project (vidmix.app) and seems to be what OP's project is doing, except that they also copy the file to indexedDB to keep it around after the browser tab is closed.
(unless some non-linear effects in human visual perception cancel all that out, but it should at least be mentioned if so)
This together with the sometimes 10+ day review times makes it impossible to maintain an app on the Play Store now.
In other browsers you could build FFmpeg with webassembly and use that for frame-by-frame decoding but it's not going to be nearly as performant.
Also as the preview playback is done with html video elements and those can't be started at a precise enough time, the timing of these videos are imprecise and may not align with other elements. This only happens at playback or scrubbing, not when staying on a single frame and the exported result should not be affected.
I suspect that the drag and drop limit of 5 may be a browser/OS limitation, now I couldn't reproduce this but will look out for it. And yes, probably it would make more sense to put them on the same track after each other so I will change that. Thanks for pointing this out!
mp3 files not loading was an embarrassing bug, I just fixed it, should work now. (only remaining issue I just realised is that the volume panel doesn't show up when the track is first selected, I'll look into that later)
pros:
- Everything is processed locally, nothing is sent to the cloud. This means privacy, but also speed: if you want to extract a 20 seconds part of a 800 MB video file, you don't have to wait for the upload. - No limits on frame size or video length. It isn't using any cloud resources so no need to put artificial limits on that. - Precise timing. Seems like a small thing, but surprisingly difficult to get it right with html <video> tags. - Preview matches exactly the final result: the exact same code generates the preview and the exported video, not some ugly hack attempting to replicate what you see in the browser to the cloud renderer.
cons:
- It only works properly in Chrome and Edge, with some acceptable fallbacks in Firefox. - HEVC is not supported by any browser, so for that FFmpeg is needed but that's only fast enough on recent computers - Everything needs to be loaded into memory. Compared to the cloud-based editors this isn't much of an issue as those typically limit you to 100-200 MB files anyway, but eventually I'd like to use the Filesystem API to make it possible to edit videos of any size.
Also there are plenty of more advanced features: unlimited number of layers, motion tracking, blending modes, using LUT files, a not-so-basic painting tool, etc.
Let me know if you have any questions or feedback!
I am working on a project using this approach: https://vidmix.app
(still plenty of minor bugs, I was planning for a proper Show HN soon)
Also because both the preview and the rendering is done with WebGL the result is guaranteed to match what you see while editing, unlike with some cloud-based editors where a different stack on the rendering backend is trying to replicate what the browser is doing with js+css
All the top reviews are talking about how slow it is. A calculator app.
Most of the other things are relatively easy to solve if they come up as actual problem.
The library gets the picture as input and spits out a 128-element vector. The more similar the vectors are for two pictures the more likely they are of the same person.
You don't need to train it, there is a pretrained version available.
> why should a network you're paying $20-$100 do everything they can to keep a target online and threaten other customers?
I am not a network engineer and I know that this is a very difficult problem. But when the provider doesn't even _seem_ to try, it only encourages further attacks.
There is something very ironic about this. They have a policy which instead of addressing the problem actively assists anyone wanting to attack their customers. No surprise that these customers have been complaining about this practice for a long time. But until now it was Somebody Else's Problem so they didn't bother figuring out some proper (or at least less terrible) solution. Now this lack of preparedness bit them in the ass...
Launched in 2002, by 2006 it had pretty much every hungarian internet users signed up who could be bothered by such sites. T-Mobile/Deutsche Telecom acquired it for 4 million euros in 2006 and at the time it seemed unthinkable that it would lose its momentum.
As a result, Hungary was one of the very last countries for Facebook to overtake the local competition, but eventually people with international friends started to sign up for Facebook too and the network effect kicked in: for the past 1-2 years iwiw.hu was in a free fall and one month ago they announced that they would pull the plug completely.
The links are very often unrelated: "unlike in the movie X", "who by then had already became famous playing X in movie Z", etc. Instead of using the entire article, I only used links from the very first sentence. (" X is an Italian 1984 drama starring Z, etc...") These links could be connected to categories.
The problem I didn't expect was that the "hierarchy" of the categories is a mess. Seems easy in concept: "comedy-drama films" is a subcategory of both "comedy films" and "drama films", so you can use all the parent categories. In practice you get to completely unrelated categories in a few steps. The biggest challenge was cleaning this mess up algorithmically. Once that was done, I had a very nice taxonomy of the movies.
The result didn't come close anywhere to the top contestants, but it was a very interesting learning experience.