A pure WebAssembly / JavaScript port of FFmpeg
ffmpegwasm.github.io
ffmpegwasm.github.io
And I have the suspicion that doing it wouldn't add much to the bottom line of the company who invested in it, despite how much they like to complain about ad-blockers.
Sounds like the pages made in Flash (or even Java) which were somewhat common in the 90s.
Uh, but those things are already happening right now, e.g. Flutter Web UI [1]
[1] https://hugotunius.se/2020/10/31/flutter-web-a-fractal-of-ba...
It's a bit hard to understand what the problem is, sorry.
You can block video and sound auto-play altogether, or just audio, or none, in `about:preferences#privacy`, and choose or check exceptions you've granted, but if I read the grand-parent comment correctly, an appropriate setting has already been put in place.
Additionally, if the website really wants to play audio against a visitor's will, it can try to hijack clicks and touch events. There are some plans to tighten this, the spec was designed to allow implementing various policies. It should also be possible to write a content blocker for this as a Web Extension (maybe it already exists).
Does this happen on all websites? On some websites, that you could possibly share with us, so we can have a look and understand what's up ?
Can anybody that is not satisfied about this open a ticket at https://mzl.la/363s8KN, and put in `:padenot` in the box `Request information from` (log in with github or a bugzilla account) with some info about the websites ? An alternative would be to send me an email, username at mozilla.com.
So far uBlock Origin seems to be pretty good at keeping the most annoying videos at bay, but sometimes they do slip through.
I'll note where it happens again.
I've seen this trick in the wild. "No autoplay" means "no autoplay without some user interaction first". And clicking one of those "I accept" buttons is indistinguishable from clicking on any other random element to make it play a video. So they just made the "I accept" button play the video as well as dismiss whatever thing was probably covering up the website.
Some people are terrible.
Thanks for the tip.
So yes, with or without wasm, people will roll their own ways of trying to get your attention.
Curious about the performance though. Would love to see benchmarks vs a standard ffmpeg install.
Basically I'd like to see something like Handbrake on the web, maybe even simpler interface.
Emsriptens proxy_to_thread option doesn't transfer the document context correctly, so calls from SDL to change canvas size, mouse scroll events, etc, all error. I just had to comment those lines out.
But then the program would infinitely lock because a mutex would not return when a pthread was created. It would just spin on mutex.wait, and there were no errors in the thread creation as I tracked it line by line.
Then debugging randomly wouldn't compile anymore.
There's a whole blog I'll write on it but the summary is that emscripten is cool, but the quality of it's features isn't ready to simply cross compile without the underlying code supporting it.
https://github.com/ffmpegwasm/ffmpeg.wasm-core/tree/n4.3.1-w...
I would be interested to sponsor development of a project that could reliably play large video files with different formats in the browser. I'd use it adapt our Chrome extension ('Language Learning with Netflix') into a website/SPA that could load in local video files, so you could study with movies from your hard drive. Contact email is in my profile. :-)
It may be trivial for Youtube or Netflix, certainly not from a consumer's perspective.
If you wanted to run a YouTube competitor you would likely require better compression, which would take even longer. Now think about it running in the browser, which likely slows it down even more.
You upload a 10 minute clip and then your browser eats 100% of the CPU for the next hour.
And all of that is just for one quality setting.
I saw no problems with the video quality if I used -profile:v high -preset:v slow and set the output bitrate equal to the input's average bitrate. With those settings, I was able to reencode at about 130 fps - handy when the raw footage was 9+ hours at 25 fps. Yes, that's "slow" on the GPU. :)
When it comes to video hosting it's largely about bandwidth. Imagine you had a video that got 1 million views. 110 MB vs 100 MB file size. That's 110 TB vs 100 TB bandwidth - a difference of 10 TB. At a cent per GB that's $100 difference. Now imagine a video with 10 million views or 100 million views.
And the real difference in file size is likely to be larger.
Those kinds of fees would only happen if you were a tiny site and using an overpriced option like AWS.
As for SEGA, AOL, and IE, they never had any real stronghold (like a lock-in), they just had the users - those are easier to switch to something new. Games for example go stale, and you don't care that much for your older played games - you want the new shiny. A browser, you switch over, and you have everything you did before, including your bookmarks. AOL, had it's stronghold when the internet was 1/100 of what it is now.
I can see the internet going 100x larger now (except if it goes to 80 billion people out of the 8 billion on Earth).
right, Windows didn't lose their position because someone out-competed them in their area, but because a whole new category of device (smart phone) and a new category service (search) rose to prominence. (Also fears of legal problems tampered their normal behavior)
> Your browser doesn't support SharedArrayBuffer, thus ffmpeg.wasm cannot execute. Please use latest version of Chromium or any other browser supports SharedArrayBuffer.
Really great work though, and I'm sure it will help a lot of people!
I'd love to see a FFmpeg compilation to WASI, so it can be run also standalone in server-side runtimes (such as Wasmer or WAVM). I wonder if threads would made a WASI compilation more challenging?
It's true that the speed will be a bit slower (I expect to be 5-10% slower than native), but in some cases the gains could outweight the relative slowdown.
It was still asm.js but working just fine.
- a webassembly blob
- a javascript wrapper to call the webassembly's functions from js in a practical way.
The repo in this thread depends on another package which is the actual bulk of work: https://github.com/ffmpegwasm/ffmpeg.wasm-core (fork of ffmpeg with emmake in a build script).
There definitely does seem to be some other work in there in terms of getting it to actually work though. And tests.