-
-
-
-
-
diff --git a/apps/vue-vite-app/src/main.ts b/apps/vue-vite-app/src/main.ts
deleted file mode 100644
index 0ac3a5f..0000000
--- a/apps/vue-vite-app/src/main.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import './assets/main.css'
-
-import { createApp } from 'vue'
-import App from './App.vue'
-
-createApp(App).mount('#app')
diff --git a/apps/vue-vite-app/tsconfig.app.json b/apps/vue-vite-app/tsconfig.app.json
deleted file mode 100644
index 59a15f2..0000000
--- a/apps/vue-vite-app/tsconfig.app.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "extends": "@vue/tsconfig/tsconfig.dom.json",
- "include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
- "exclude": ["src/**/__tests__/*"],
- "compilerOptions": {
- "composite": true,
- "baseUrl": ".",
- "paths": {
- "@/*": ["./src/*"]
- },
- "target": "esnext",
- "moduleResolution": "node"
- }
-}
diff --git a/apps/vue-vite-app/tsconfig.json b/apps/vue-vite-app/tsconfig.json
deleted file mode 100644
index 66b5e57..0000000
--- a/apps/vue-vite-app/tsconfig.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "files": [],
- "references": [
- {
- "path": "./tsconfig.node.json"
- },
- {
- "path": "./tsconfig.app.json"
- }
- ]
-}
diff --git a/apps/vue-vite-app/tsconfig.node.json b/apps/vue-vite-app/tsconfig.node.json
deleted file mode 100644
index dee96be..0000000
--- a/apps/vue-vite-app/tsconfig.node.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "extends": "@tsconfig/node18/tsconfig.json",
- "include": [
- "vite.config.*",
- "vitest.config.*",
- "cypress.config.*",
- "nightwatch.conf.*",
- "playwright.config.*"
- ],
- "compilerOptions": {
- "composite": true,
- "module": "ESNext",
- "moduleResolution": "Bundler",
- "types": ["node"]
- }
-}
diff --git a/apps/vue-vite-app/vite.config.ts b/apps/vue-vite-app/vite.config.ts
deleted file mode 100644
index 20fba69..0000000
--- a/apps/vue-vite-app/vite.config.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { fileURLToPath, URL } from 'node:url'
-
-import { defineConfig } from 'vite'
-import vue from '@vitejs/plugin-vue'
-import vueJsx from '@vitejs/plugin-vue-jsx'
-
-// https://vitejs.dev/config/
-export default defineConfig({
- plugins: [vue(), vueJsx()],
- resolve: {
- alias: {
- '@': fileURLToPath(new URL('./src', import.meta.url))
- }
- },
- optimizeDeps: {
- exclude: ['@ffmpeg/ffmpeg', '@ffmpeg/util']
- },
- server: {
- headers: {
- 'Cross-Origin-Opener-Policy': 'same-origin',
- 'Cross-Origin-Embedder-Policy': 'require-corp'
- }
- }
-})
diff --git a/apps/website/.gitignore b/apps/website/.gitignore
deleted file mode 100644
index 0ba35a9..0000000
--- a/apps/website/.gitignore
+++ /dev/null
@@ -1,21 +0,0 @@
-# Dependencies
-/node_modules
-
-# Production
-/build
-/docs/api
-
-# Generated files
-.docusaurus
-.cache-loader
-
-# Misc
-.DS_Store
-.env.local
-.env.development.local
-.env.test.local
-.env.production.local
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
diff --git a/apps/website/README.md b/apps/website/README.md
deleted file mode 100644
index f42b9a9..0000000
--- a/apps/website/README.md
+++ /dev/null
@@ -1,44 +0,0 @@
-# Website
-
-This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.
-
-### Installation
-
-When cloning the repository, make sure you have git-lfs installed. If you install git-lfs after cloning, simple run
-`git lfs pull` to download large files.
-
-```
-$ npm install
-```
-
-### Local Development
-
-```
-$ npm start
-```
-
-This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
-
-### Build
-
-```
-$ npm run build
-```
-
-This command generates static content into the `build` directory and can be served using any static contents hosting service.
-
-### Deployment
-
-Using SSH:
-
-```
-$ USE_SSH=true npm run deploy
-```
-
-Not using SSH:
-
-```
-$ GIT_USER= npm run deploy
-```
-
-If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.
diff --git a/apps/website/assets/angular.xcf b/apps/website/assets/angular.xcf
deleted file mode 100644
index 670d272..0000000
Binary files a/apps/website/assets/angular.xcf and /dev/null differ
diff --git a/apps/website/assets/background.xcf b/apps/website/assets/background.xcf
deleted file mode 100644
index d94cdbc..0000000
Binary files a/apps/website/assets/background.xcf and /dev/null differ
diff --git a/apps/website/assets/ffmpegwasm-arch.drawio b/apps/website/assets/ffmpegwasm-arch.drawio
deleted file mode 100644
index c76f1dc..0000000
--- a/apps/website/assets/ffmpegwasm-arch.drawio
+++ /dev/null
@@ -1,80 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/apps/website/assets/nextjs.xcf b/apps/website/assets/nextjs.xcf
deleted file mode 100644
index 8f74439..0000000
Binary files a/apps/website/assets/nextjs.xcf and /dev/null differ
diff --git a/apps/website/assets/react-vite.xcf b/apps/website/assets/react-vite.xcf
deleted file mode 100644
index 0663063..0000000
Binary files a/apps/website/assets/react-vite.xcf and /dev/null differ
diff --git a/apps/website/assets/solidstart-vite.xcf b/apps/website/assets/solidstart-vite.xcf
deleted file mode 100644
index 4681f2b..0000000
Binary files a/apps/website/assets/solidstart-vite.xcf and /dev/null differ
diff --git a/apps/website/assets/sveltekit-vite.xcf b/apps/website/assets/sveltekit-vite.xcf
deleted file mode 100644
index 703875d..0000000
Binary files a/apps/website/assets/sveltekit-vite.xcf and /dev/null differ
diff --git a/apps/website/assets/vanilla.xcf b/apps/website/assets/vanilla.xcf
deleted file mode 100644
index 2023509..0000000
Binary files a/apps/website/assets/vanilla.xcf and /dev/null differ
diff --git a/apps/website/assets/vue-vite.xcf b/apps/website/assets/vue-vite.xcf
deleted file mode 100644
index a217f94..0000000
Binary files a/apps/website/assets/vue-vite.xcf and /dev/null differ
diff --git a/apps/website/babel.config.js b/apps/website/babel.config.js
deleted file mode 100644
index e00595d..0000000
--- a/apps/website/babel.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
- presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
-};
diff --git a/apps/website/blog/2023-07-26-release-ffmpeg.wasm-0.12.0.mdx b/apps/website/blog/2023-07-26-release-ffmpeg.wasm-0.12.0.mdx
deleted file mode 100644
index ed88c58..0000000
--- a/apps/website/blog/2023-07-26-release-ffmpeg.wasm-0.12.0.mdx
+++ /dev/null
@@ -1,55 +0,0 @@
----
-slug: release-ffmpeg.wasm-0.12.0
-title: Release ffmpeg.wasm 0.12.0
-authors: [jeromewu]
-tags: [ffmpeg.wasm]
----
-
-Finally, a new start. :tada:
-
-
-
-I started to work on ffmpeg.wasm around Oct. 2019, it was the time
-WebAssembly is still in very early stage and transpiling FFmpeg to ffmpeg.wasm
-was very challenging. (but possible as there was a pioneer project
-[ffmpeg.js](https://github.com/Kagami/ffmpeg.js/)) Over these years, I
-have been trying to make ffmpeg.wasm to be production-grade, but failed
-as FFmpeg is such a powerful framework and WebAssembly is still evolving.
-It wasn't easy to support even one requirements (ex. RTSP) from the community
-and I found it really hard to continue sometimes. But with almost **11k stars**,
-**600 forks**, **4.1k used-by projects** and **2.3M downloads** in total,
-I still believe ffmpeg.wasm is a meaningful project to continue.
-That's why I decided to pause a little while and rethink what
-should be done in the next stage.
-
-As the result, I started to work on ffmpeg.wasm 0.12.0, it is a major version and
-not backward compatible with 0.11.0. Massive issues are fixed in this version,
-including:
-
-- Upgrade Emscripten to 3.1.40
-- Upgrade FFmpeg to n5.1.3
-- Docker build with cache (reduce time to build a new version)
-- Support timeout(), terminate() and other fundamental operations
-- Split libraries to multiple small libraries
-- Rewrite the whole library with TypeScript
-- Merge multiple repositories into one monorepo
-- Offical Web Worker support
-- Offical single thread and multi thread version support
-- Enhanced documentation
-- Official domain name
-
-Lots of features are still in the backlog and it requires lots effort to
-even just compelete one of them, such as:
-
-- Speed up ffmpeg.wasm using WebAssembly intrinsic
-- Support RTSP protocol
-- Support more popular libraries
-
-I believe there is still a long way to go for ffmpeg.wasm to really become
-a production-grade library, but it is defintely a gamechanger and a chance
-to see the potential of WebAssembly and web technologies in general. That's
-why I am working on it and welcome to join us.
-
-Hope you enjoy this release :smile:
-
-\- Jerome
diff --git a/apps/website/blog/authors.yml b/apps/website/blog/authors.yml
deleted file mode 100644
index b7b8049..0000000
--- a/apps/website/blog/authors.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-jeromewu:
- name: Jerome Wu
- title: Maintainer of ffmpeg.wasm
- url: https://github.com/jeromewu
- image_url: /img/jeromewu.png
diff --git a/apps/website/deploy.sh b/apps/website/deploy.sh
deleted file mode 100644
index 0830b0d..0000000
--- a/apps/website/deploy.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/bash
-
-npm install
-npm run build
diff --git a/apps/website/docs/contribution/core.md b/apps/website/docs/contribution/core.md
deleted file mode 100644
index cb30d7a..0000000
--- a/apps/website/docs/contribution/core.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# @ffmpeg/core
-
-To build @ffmpeg/core, make sure your docker is version 23.0+ as
-[buildx](https://docs.docker.com/build/architecture/) is adopted. Also
-You will need to install `make` to run build scripts.
-
-## Build
-
-Dev Build (single thread):
-```bash
-$ make dev
-```
-
-Dev Build (multithread):
-```bash
-$ make dev-mt
-```
-
-Prodution Build (single thread):
-```bash
-$ make prd
-```
-
-Prodution Build (multithread):
-```bash
-$ make prd-mt
-```
-
-> Each build might take around 1 hour depends on the spec of your machine,
-> subsequent builds are faster as most layers are cached.
-
-The output file locates at **/packages/core** or **/packages/core-mt**.
-
-## Publish
-
-Simply run `npm publish` under **packages/core** or **/packages/core-mt**.
diff --git a/apps/website/docs/contribution/ffmpeg.md b/apps/website/docs/contribution/ffmpeg.md
deleted file mode 100644
index 02e67c2..0000000
--- a/apps/website/docs/contribution/ffmpeg.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# @ffmpeg/ffmpeg
-
-The source code of @ffmpeg/ffmpeg locates at **/packages/ffmpeg**.
-
-## Development
-
-```bash
-$ npm run dev
-```
-
-## Build
-
-Transpile Typescript to JavaScript.
-
-```bash
-$ npm run build
-```
-
-## Lint
-
-```bash
-$ npm run lint
-```
-
-## Publish
-
-Simply run `npm publish` under **packages/ffmpeg**.
diff --git a/apps/website/docs/contribution/util.md b/apps/website/docs/contribution/util.md
deleted file mode 100644
index f74f7f5..0000000
--- a/apps/website/docs/contribution/util.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# @ffmpeg/util
-
-The source code of @ffmpeg/util locates at **/packages/util**.
-
-## Development
-
-```bash
-$ npm run dev
-```
-
-## Build
-
-Transpile Typescript to JavaScript.
-
-```bash
-$ npm run build
-```
-
-## Lint
-
-```bash
-$ npm run lint
-```
-
-## Publish
-
-Simply run `npm publish` under **packages/util**.
diff --git a/apps/website/docs/faq.md b/apps/website/docs/faq.md
deleted file mode 100644
index 446e117..0000000
--- a/apps/website/docs/faq.md
+++ /dev/null
@@ -1,55 +0,0 @@
-# FAQ
-
-### Why ffmpeg.wasm doesn't support nodejs?
-
-ffmpeg.wasm did support nodejs before 0.12.0, but decided to discontinue nodejs support due to:
-
-- It takes extra effort to maintain nodejs support
-- If you are not in browser, there are a lot of better choices than using WebAssembly for a better performance, ex:
- - nodejs: https://www.npmjs.com/package/fluent-ffmpeg
- - react-native: https://github.com/arthenica/ffmpeg-kit
-
-Of course, it is still highly welcome to contribute a nodejs version of ffmpeg.wasm.
-
-### Why ffmpeg.wasm is so slow comparing to ffmpeg?
-
-As of now, WebAssembly is still a lot slower than native, it is possible to further speed up using
-WebAssembly intrinsic, which is basically writing assembly code. It is something we are investigating
-and hope to introduce in the future.
-
-If you are OK with more unstable version of ffmpeg.wasm, using ffmpeg.wasm multithread (mt) version
-can have around 2x speed comparing to single thread (but consume a lot more memory and cpu)
-
-### Is RTSP supported by ffmpeg.wasm?
-
-We are trying to support, but so far WebAssembly itself lack of features like sockets which makes
-it hard to implement RTSP protocol. Possible workarounds are still under investigation.
-
-### What is the license of ffmpeg.wasm?
-
-There are two components inside ffmpeg.wasm:
-
-- @ffmpeg/ffmpeg (https://github.com/ffmpegwasm/ffmpeg.wasm/packages/ffmpeg)
-- @ffmpeg/core (https://github.com/ffmpegwasm/ffmpeg.wasm/packages/core)
-
-@ffmpeg/core contains WebAssembly code which is transpiled from original FFmpeg C code with minor modifications, but overall it still following the same licenses as FFmpeg and its external libraries (as each external libraries might have its own license).
-
-@ffmpeg/ffmpeg contains kind of a wrapper to handle the complexity of loading core and calling low-level APIs. It is a small code base and under MIT license.
-
-### What is the maximum size of input file?
-
-2 GB, which is a hard limit in WebAssembly. Might become 4 GB in the future.
-
-### How can I build my own ffmpeg.wasm?
-
-In fact, it is `@ffmpeg/core` most people would like to build.
-
-To build on your own, you can check [Contribution Guide](/docs/contribution/core)
-
-Also you can check this series of posts to learn more fundamental concepts
-(OUTDATED, but still good to learn foundations):
-
-- https://jeromewu.github.io/build-ffmpeg-webassembly-version-part-1-preparation/
-- https://jeromewu.github.io/build-ffmpeg-webassembly-version-part-2-compile-with-emscripten/
-- https://jeromewu.github.io/build-ffmpeg-webassembly-version-part-3-v0.1/
-- https://jeromewu.github.io/build-ffmpeg-webassembly-version-part-4-v0.2/
diff --git a/apps/website/docs/getting-started/examples.md b/apps/website/docs/getting-started/examples.md
deleted file mode 100644
index e4dd6b9..0000000
--- a/apps/website/docs/getting-started/examples.md
+++ /dev/null
@@ -1,73 +0,0 @@
-import Grid from '@mui/material/Unstable_Grid2';
-import MuiThemeProvider from "@site/src/components/common/MuiThemeProvider";
-import ExampleCard from "@site/src/components/common/ExampleCard";
-
-# Examples
-
-You can find how to use ffmpeg.wasm with frameworks here. :smile:
-
-:::caution
-Do remember to run `npm run build` in the root of the repository before trying
-any of the examples.
-:::
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/apps/website/docs/getting-started/installation.md b/apps/website/docs/getting-started/installation.md
deleted file mode 100644
index 30f46ae..0000000
--- a/apps/website/docs/getting-started/installation.md
+++ /dev/null
@@ -1,35 +0,0 @@
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Installation
-
-:::note
-ffmpeg.wasm only supports running in browser, see [FAQ](/docs/faq) for more
-details
-:::
-
-## Package Managers
-
-Install ffmpeg.wasm using package managers like npm and yarn:
-
-
-
-
-```bash
-npm install @ffmpeg/ffmpeg @ffmpeg/util
-```
-
-
-
-
-```bash
-yarn add @ffmpeg/ffmpeg @ffmpeg/util
-```
-
-
-
-
-:::info
-As `@ffmpeg/ffmpeg` spawns a web worker, you cannot import `@ffmpeg/ffmpeg` from CDN like
-unpkg. It is recommended to download it and host it on your server most of the time.
-:::
diff --git a/apps/website/docs/getting-started/usage.md b/apps/website/docs/getting-started/usage.md
deleted file mode 100644
index 3631ed0..0000000
--- a/apps/website/docs/getting-started/usage.md
+++ /dev/null
@@ -1,444 +0,0 @@
-# Usage
-
-Learn the basics of using ffmpeg.wasm.
-
-:::note
-It is recommended to read [Overview](/docs/overview) first.
-:::
-
-## Transcode webm to mp4 video
-
-:::caution
-If you are a [vite](https://vitejs.dev/) user, use `esm` in **baseURL** instead of `umd`:
-
-~~https://unpkg.com/@ffmpeg/core@0.12.10/dist/umd~~ => https://unpkg.com/@ffmpeg/core@0.12.10/dist/esm
-:::
-
-```jsx live
-// import { FFmpeg } from '@ffmpeg/ffmpeg';
-// import { fetchFile, toBlobURL } from '@ffmpeg/util';
-function() {
- const [loaded, setLoaded] = useState(false);
- const ffmpegRef = useRef(new FFmpeg());
- const videoRef = useRef(null);
- const messageRef = useRef(null);
-
- const load = async () => {
- const baseURL = 'https://unpkg.com/@ffmpeg/core@0.12.6/dist/umd'
- const ffmpeg = ffmpegRef.current;
- ffmpeg.on('log', ({ message }) => {
- messageRef.current.innerHTML = message;
- console.log(message);
- });
- // toBlobURL is used to bypass CORS issue, urls with the same
- // domain can be used directly.
- await ffmpeg.load({
- coreURL: await toBlobURL(`${baseURL}/ffmpeg-core.js`, 'text/javascript'),
- wasmURL: await toBlobURL(`${baseURL}/ffmpeg-core.wasm`, 'application/wasm'),
- });
- setLoaded(true);
- }
-
- const transcode = async () => {
- const ffmpeg = ffmpegRef.current;
- await ffmpeg.writeFile('input.webm', await fetchFile('https://raw.githubusercontent.com/ffmpegwasm/testdata/master/Big_Buck_Bunny_180_10s.webm'));
- await ffmpeg.exec(['-i', 'input.webm', 'output.mp4']);
- const data = await ffmpeg.readFile('output.mp4');
- videoRef.current.src =
- URL.createObjectURL(new Blob([data.buffer], {type: 'video/mp4'}));
- }
-
- return (loaded
- ? (
- <>
-
-
-
-
-
-
diff --git a/apps/website/docs/overview.md b/apps/website/docs/overview.md
deleted file mode 100644
index 8fe7f8f..0000000
--- a/apps/website/docs/overview.md
+++ /dev/null
@@ -1,122 +0,0 @@
-import MuiThemeProvider from "@site/src/components/common/MuiThemeProvider";
-import Table from '@mui/material/Table';
-import TableBody from '@mui/material/TableBody';
-import TableCell from '@mui/material/TableCell';
-import TableContainer from '@mui/material/TableContainer';
-import TableHead from '@mui/material/TableHead';
-import TableRow from '@mui/material/TableRow';
-import Paper from '@mui/material/Paper';
-
-# Overview
-
-:::info
-For 0.11.x, visit [https://ffmpegwasm-0-11-x.netlify.app](https://ffmpegwasm-0-11-x.netlify.app)
-and [0.11.x](https://github.com/ffmpegwasm/ffmpeg.wasm/tree/0.11.x) branch.
-:::
-
-## Introduction
-
-ffmpeg.wasm is a pure WebAssembly / JavaScript port of [FFmpeg](https://www.ffmpeg.org/)
-enabling video & audio record, convert and stream right inside browsers.
-
-We leverage
-[Emscripten](https://emscripten.org/) to transpile FFmpeg source code and many
-libraries to WebAssembly and develop a minimal but essential library to free
-developers from common requirements like running ffmpeg inside web worker and
-more.
-
-## Advantages
-
-- **Security**: your users' data only lives inside their browser, no need to
- worry about any data leakage or network latency.
-- **Client-side computing**: instead of hosting a cluster of server-end servers,
- you can now offload multimedia processing to client-side.
-- **Flexible**: ffmpeg.wasm comes with single-thread and multi-thread cores, you
- can use whichever fits your use case.
-
-## Architecture
-
-
-
-Multimedia transcoding is a resource-intensive task that you don't want to
-execute in main thread, thus in ffmpeg.wasm we offload those task to web worker
-(`ffmpeg.worker`) by default. This makes almost all function calls in ffmpeg.wasm
-are asynchronous and it is recommended to use **async** / **await** syntax.
-
-`ffmpeg.worker` downloads WebAssembly code (`ffmpeg-core`) from CDN
-and initialized it in WorkerGlobalScope. For any input video file you would like
-to process, you need to first populated them inside ffmpeg-core File System and
-also read result from `ffmpeg-core` File System once it is done.
-
-If you are using a multi-thread version of `ffmpeg-core`, more web workers will
-be spawned by `ffmpeg-core` inside `ffmpeg.worker`
-
-:::info
-The concept of `core` in ffmpeg.wasm is like the engine of a car, it is not only
-the most important part of ffmpeg.wasm but also a swappable component. Currently
-we maintain single-thread (`@ffmpeg/core`) and multi-thread version
-(`@ffmpeg/core-mt`) cores, you can build your own core (ex. a core with x264
- lib only to minimize ffmpeg-core.wasm file size) using build scripts in the repository.
-:::
-
-## Packages
-
-All ffmpeg.wasm packages are under [@ffmpeg](https://www.npmjs.com/search?q=%40ffmpeg)
-name space:
-
-| Name | Usage |
-| ---- | ----- |
-| @ffmpeg/ffmpeg | ffmpeg.wasm main package |
-| @ffmpeg/util | common utility functions |
-| @ffmpeg/types | TypeScript types |
-| @ffmpeg/core | single-thread ffmpeg.wasm core |
-| @ffmpeg/core-mt | multi-thread ffmpeg.wasm core |
-
-## Libraries
-
-ffmpeg.wasm is built with toolchains / libraries:
-
-
-
-
-
-
- Name
- Version
- Note
-
-
-
- {[
- {name: "Emscripten", version: "3.1.40", note: "Emscripten is a toolchain for compiling C and C++ code into WebAssembly and JavaScript, making it possible to run applications written in these languages in web browsers."},
- {name: "FFmpeg", version: "n5.1.4", note: "FFmpeg is a powerful multimedia framework that can decode, encode, transcode, and stream audio and video files. It's widely used for media manipulation and streaming."},
- {name: "x264", version: "0.164.x", note: "x264 is a popular video encoding library that provides high-quality H.264 video compression. It's commonly used for video encoding and transcoding."},
- {name: "x265", version: "3.4", note: "x265 is a video encoding library that specializes in encoding videos using the H.265/HEVC codec, offering high compression efficiency for video content."},
- {name: "libvpx", version: "v1.13.1", note: "libvpx is an open-source video codec library used for encoding and decoding VP8 and VP9 video formats, commonly used for web-based video streaming."},
- {name: "lame", version: "3.100", note: "LAME is an audio encoder that converts audio files to the MP3 format, making it widely used for creating MP3 audio files."},
- {name: "ogg", version: "v1.3.4", note: "Ogg is a multimedia container format, and this library provides support for encoding and decoding audio and video in the Ogg format."},
- {name: "theora", version: "v1.1.1", note: "Theora is an open video codec designed for efficient video compression within the Ogg multimedia framework."},
- {name: "opus", version: "v1.3.1", note: "Opus is a versatile audio codec capable of handling both voice and music with low latency and high-quality compression."},
- {name: "vorbis", version: "v1.3.3", note: "Vorbis is an open-source audio codec known for its high audio quality and efficient compression. It's often used for audio streaming."},
- {name: "zlib", version: "v1.2.11", note: "zlib is a compression library that provides data compression and decompression functionality, commonly used in file compression formats like gzip."},
- {name: "libwebp", version: "v1.3.2", note: "libwebp is a library for working with the WebP image format, offering efficient image compression for web use"},
- {name: "freetype2", version: "v2.10.4", note: "FreeType 2 is a library for rendering fonts. It is commonly used for text rendering in applications and systems."},
- {name: "fribidi", version: "v1.0.9", note: "FriBidi is a library for handling bidirectional text (text containing both left-to-right and right-to-left scripts) and is often used in text layout and rendering."},
- {name: "harfbuzz", version: "5.2.0", note: "HarfBuzz is a text shaping engine that allows complex script text to be rendered correctly. It's used in conjunction with font rendering libraries."},
- {name: "libass", version: "0.15.0", note: "libass is a library for rendering and formatting subtitles in multimedia applications, making it essential for displaying subtitles alongside video content."},
- {name: "zimg", version: "3.0.5", note: "zimg implements the commonly required image processing basics of scaling, colorspace conversion, and depth conversion."}
- ].map((row) => (
-
-
- {row.name}
-
- {row.version}
- {row.note}
-
- ))}
-
-
-
-
diff --git a/apps/website/docs/performance.md b/apps/website/docs/performance.md
deleted file mode 100644
index e2189a3..0000000
--- a/apps/website/docs/performance.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# Performance
-
-ffmpeg.wasm uses transpiled FFmpeg C source code to WebAssembly code, it is for
-certain that ffmpeg.wasm won't perform as good as FFmpeg as it is not fully
-optimized at the moment. (Even in ffmpeg.wasm multithread version). In this
-section we provide a short comparison, so that you can make decision based on your
-needs:
-
-## Environment
-
-- CPU: 8 × 11th Gen Intel® Core™ i5-1135G7 @ 2.40GHz
-- Memory: 15.6 GiB of RAM
-- OS: Manjaro Linux 6.1.44-1-MANJARO (64-bit)
-- Browser: Google Chrome Version 116.0.5845.96 (Official Build) (64-bit)
-- FFmpeg: n5.1.2
-
-## Comparison
-
-Setup:
-
-- Each command is executed 5 times.
-- Only `ffmpeg.exec()` time is measured.
-- Candidates
- - FFmpeg: [native FFmpeg](https://hub.docker.com/r/linuxserver/ffmpeg),
- considered as baseline.
- - core: ffmpeg.wasm single thread version.
- - core-mt: ffmpeg.wasm multi thread version.
-
-### $ ffmpeg -i [input.webm](https://test-videos.co.uk/vids/bigbuckbunny/webm/vp8/720/Big_Buck_Bunny_720_10s_1MB.webm) output.mp4
-
-| # | FFmpeg | core v0.12.3 | core-mt v0.12.3 |
-| --- | ------ | ------------ | --------------- |
-| Avg | 5.2 sec | 128.8 sec (0.04x) | 60.4 sec (0.08x) |
-| Max | 5.3 sec | 130.7 sec | 63.9 sec |
-| Min | 5.1 sec | 126.6 sec | 59 sec |
diff --git a/apps/website/docs/privacy-policy.md b/apps/website/docs/privacy-policy.md
deleted file mode 100644
index 9cc59b1..0000000
--- a/apps/website/docs/privacy-policy.md
+++ /dev/null
@@ -1,168 +0,0 @@
-# Privacy Policy
-
Last updated: August 05, 2023
-
This Privacy Policy describes Our policies and procedures on the collection, use and disclosure of Your information when You use the Service and tells You about Your privacy rights and how the law protects You.
-
We use Your Personal data to provide and improve the Service. By using the Service, You agree to the collection and use of information in accordance with this Privacy Policy. This Privacy Policy has been created with the help of the Free Privacy Policy Generator.
-
Interpretation and Definitions
-
Interpretation
-
The words of which the initial letter is capitalized have meanings defined under the following conditions. The following definitions shall have the same meaning regardless of whether they appear in singular or in plural.
-
Definitions
-
For the purposes of this Privacy Policy:
-
-
-
Account means a unique account created for You to access our Service or parts of our Service.
-
-
-
Affiliate means an entity that controls, is controlled by or is under common control with a party, where "control" means ownership of 50% or more of the shares, equity interest or other securities entitled to vote for election of directors or other managing authority.
-
-
-
Company (referred to as either "the Company", "We", "Us" or "Our" in this Agreement) refers to ffmpeg.wasm.
-
-
-
Cookies are small files that are placed on Your computer, mobile device or any other device by a website, containing the details of Your browsing history on that website among its many uses.
-
-
-
Country refers to: Singapore
-
-
-
Device means any device that can access the Service such as a computer, a cellphone or a digital tablet.
-
-
-
Personal Data is any information that relates to an identified or identifiable individual.
-
-
-
Service refers to the Website.
-
-
-
Service Provider means any natural or legal person who processes the data on behalf of the Company. It refers to third-party companies or individuals employed by the Company to facilitate the Service, to provide the Service on behalf of the Company, to perform services related to the Service or to assist the Company in analyzing how the Service is used.
-
-
-
Usage Data refers to data collected automatically, either generated by the use of the Service or from the Service infrastructure itself (for example, the duration of a page visit).
You means the individual accessing or using the Service, or the company, or other legal entity on behalf of which such individual is accessing or using the Service, as applicable.
-
-
-
Collecting and Using Your Personal Data
-
Types of Data Collected
-
Personal Data
-
While using Our Service, We may ask You to provide Us with certain personally identifiable information that can be used to contact or identify You. Personally identifiable information may include, but is not limited to:
-
-
Usage Data
-
-
Usage Data
-
Usage Data is collected automatically when using the Service.
-
Usage Data may include information such as Your Device's Internet Protocol address (e.g. IP address), browser type, browser version, the pages of our Service that You visit, the time and date of Your visit, the time spent on those pages, unique device identifiers and other diagnostic data.
-
When You access the Service by or through a mobile device, We may collect certain information automatically, including, but not limited to, the type of mobile device You use, Your mobile device unique ID, the IP address of Your mobile device, Your mobile operating system, the type of mobile Internet browser You use, unique device identifiers and other diagnostic data.
-
We may also collect information that Your browser sends whenever You visit our Service or when You access the Service by or through a mobile device.
-
Tracking Technologies and Cookies
-
We use Cookies and similar tracking technologies to track the activity on Our Service and store certain information. Tracking technologies used are beacons, tags, and scripts to collect and track information and to improve and analyze Our Service. The technologies We use may include:
-
-
Cookies or Browser Cookies. A cookie is a small file placed on Your Device. You can instruct Your browser to refuse all Cookies or to indicate when a Cookie is being sent. However, if You do not accept Cookies, You may not be able to use some parts of our Service. Unless you have adjusted Your browser setting so that it will refuse Cookies, our Service may use Cookies.
-
Web Beacons. Certain sections of our Service and our emails may contain small electronic files known as web beacons (also referred to as clear gifs, pixel tags, and single-pixel gifs) that permit the Company, for example, to count users who have visited those pages or opened an email and for other related website statistics (for example, recording the popularity of a certain section and verifying system and server integrity).
-
-
Cookies can be "Persistent" or "Session" Cookies. Persistent Cookies remain on Your personal computer or mobile device when You go offline, while Session Cookies are deleted as soon as You close Your web browser. Learn more about cookies on the Free Privacy Policy website article.
-
We use both Session and Persistent Cookies for the purposes set out below:
-
-
-
Necessary / Essential Cookies
-
Type: Session Cookies
-
Administered by: Us
-
Purpose: These Cookies are essential to provide You with services available through the Website and to enable You to use some of its features. They help to authenticate users and prevent fraudulent use of user accounts. Without these Cookies, the services that You have asked for cannot be provided, and We only use these Cookies to provide You with those services.
-
-
-
Cookies Policy / Notice Acceptance Cookies
-
Type: Persistent Cookies
-
Administered by: Us
-
Purpose: These Cookies identify if users have accepted the use of cookies on the Website.
-
-
-
Functionality Cookies
-
Type: Persistent Cookies
-
Administered by: Us
-
Purpose: These Cookies allow us to remember choices You make when You use the Website, such as remembering your login details or language preference. The purpose of these Cookies is to provide You with a more personal experience and to avoid You having to re-enter your preferences every time You use the Website.
-
-
-
For more information about the cookies we use and your choices regarding cookies, please visit our Cookies Policy or the Cookies section of our Privacy Policy.
-
Use of Your Personal Data
-
The Company may use Personal Data for the following purposes:
-
-
-
To provide and maintain our Service, including to monitor the usage of our Service.
-
-
-
To manage Your Account: to manage Your registration as a user of the Service. The Personal Data You provide can give You access to different functionalities of the Service that are available to You as a registered user.
-
-
-
For the performance of a contract: the development, compliance and undertaking of the purchase contract for the products, items or services You have purchased or of any other contract with Us through the Service.
-
-
-
To contact You: To contact You by email, telephone calls, SMS, or other equivalent forms of electronic communication, such as a mobile application's push notifications regarding updates or informative communications related to the functionalities, products or contracted services, including the security updates, when necessary or reasonable for their implementation.
-
-
-
To provide You with news, special offers and general information about other goods, services and events which we offer that are similar to those that you have already purchased or enquired about unless You have opted not to receive such information.
-
-
-
To manage Your requests: To attend and manage Your requests to Us.
-
-
-
For business transfers: We may use Your information to evaluate or conduct a merger, divestiture, restructuring, reorganization, dissolution, or other sale or transfer of some or all of Our assets, whether as a going concern or as part of bankruptcy, liquidation, or similar proceeding, in which Personal Data held by Us about our Service users is among the assets transferred.
-
-
-
For other purposes: We may use Your information for other purposes, such as data analysis, identifying usage trends, determining the effectiveness of our promotional campaigns and to evaluate and improve our Service, products, services, marketing and your experience.
-
-
-
We may share Your personal information in the following situations:
-
-
With Service Providers: We may share Your personal information with Service Providers to monitor and analyze the use of our Service, to contact You.
-
For business transfers: We may share or transfer Your personal information in connection with, or during negotiations of, any merger, sale of Company assets, financing, or acquisition of all or a portion of Our business to another company.
-
With Affiliates: We may share Your information with Our affiliates, in which case we will require those affiliates to honor this Privacy Policy. Affiliates include Our parent company and any other subsidiaries, joint venture partners or other companies that We control or that are under common control with Us.
-
With business partners: We may share Your information with Our business partners to offer You certain products, services or promotions.
-
With other users: when You share personal information or otherwise interact in the public areas with other users, such information may be viewed by all users and may be publicly distributed outside.
-
With Your consent: We may disclose Your personal information for any other purpose with Your consent.
-
-
Retention of Your Personal Data
-
The Company will retain Your Personal Data only for as long as is necessary for the purposes set out in this Privacy Policy. We will retain and use Your Personal Data to the extent necessary to comply with our legal obligations (for example, if we are required to retain your data to comply with applicable laws), resolve disputes, and enforce our legal agreements and policies.
-
The Company will also retain Usage Data for internal analysis purposes. Usage Data is generally retained for a shorter period of time, except when this data is used to strengthen the security or to improve the functionality of Our Service, or We are legally obligated to retain this data for longer time periods.
-
Transfer of Your Personal Data
-
Your information, including Personal Data, is processed at the Company's operating offices and in any other places where the parties involved in the processing are located. It means that this information may be transferred to — and maintained on — computers located outside of Your state, province, country or other governmental jurisdiction where the data protection laws may differ than those from Your jurisdiction.
-
Your consent to this Privacy Policy followed by Your submission of such information represents Your agreement to that transfer.
-
The Company will take all steps reasonably necessary to ensure that Your data is treated securely and in accordance with this Privacy Policy and no transfer of Your Personal Data will take place to an organization or a country unless there are adequate controls in place including the security of Your data and other personal information.
-
Delete Your Personal Data
-
You have the right to delete or request that We assist in deleting the Personal Data that We have collected about You.
-
Our Service may give You the ability to delete certain information about You from within the Service.
-
You may update, amend, or delete Your information at any time by signing in to Your Account, if you have one, and visiting the account settings section that allows you to manage Your personal information. You may also contact Us to request access to, correct, or delete any personal information that You have provided to Us.
-
Please note, however, that We may need to retain certain information when we have a legal obligation or lawful basis to do so.
-
Disclosure of Your Personal Data
-
Business Transactions
-
If the Company is involved in a merger, acquisition or asset sale, Your Personal Data may be transferred. We will provide notice before Your Personal Data is transferred and becomes subject to a different Privacy Policy.
-
Law enforcement
-
Under certain circumstances, the Company may be required to disclose Your Personal Data if required to do so by law or in response to valid requests by public authorities (e.g. a court or a government agency).
-
Other legal requirements
-
The Company may disclose Your Personal Data in the good faith belief that such action is necessary to:
-
-
Comply with a legal obligation
-
Protect and defend the rights or property of the Company
-
Prevent or investigate possible wrongdoing in connection with the Service
-
Protect the personal safety of Users of the Service or the public
-
Protect against legal liability
-
-
Security of Your Personal Data
-
The security of Your Personal Data is important to Us, but remember that no method of transmission over the Internet, or method of electronic storage is 100% secure. While We strive to use commercially acceptable means to protect Your Personal Data, We cannot guarantee its absolute security.
-
Children's Privacy
-
Our Service does not address anyone under the age of 13. We do not knowingly collect personally identifiable information from anyone under the age of 13. If You are a parent or guardian and You are aware that Your child has provided Us with Personal Data, please contact Us. If We become aware that We have collected Personal Data from anyone under the age of 13 without verification of parental consent, We take steps to remove that information from Our servers.
-
If We need to rely on consent as a legal basis for processing Your information and Your country requires consent from a parent, We may require Your parent's consent before We collect and use that information.
-
Links to Other Websites
-
Our Service may contain links to other websites that are not operated by Us. If You click on a third party link, You will be directed to that third party's site. We strongly advise You to review the Privacy Policy of every site You visit.
-
We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services.
-
Changes to this Privacy Policy
-
We may update Our Privacy Policy from time to time. We will notify You of any changes by posting the new Privacy Policy on this page.
-
We will let You know via email and/or a prominent notice on Our Service, prior to the change becoming effective and update the "Last updated" date at the top of this Privacy Policy.
-
You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page.
-
Contact Us
-
If you have any questions about this Privacy Policy, You can contact us:
-
- );
-}
-
-export default function Home(): JSX.Element {
- const { siteConfig } = useDocusaurusContext();
- return (
-
-
-
-
-
-
-
- );
-}
diff --git a/apps/website/src/pages/playground.md b/apps/website/src/pages/playground.md
deleted file mode 100644
index c5f3cab..0000000
--- a/apps/website/src/pages/playground.md
+++ /dev/null
@@ -1,122 +0,0 @@
-import BrowserOnly from '@docusaurus/BrowserOnly';
-import MuiThemeProvider from "@site/src/components/common/MuiThemeProvider";
-import ThemedButton from "@site/src/components/common/ThemedButton";
-import ThemedIconButton from "@site/src/components/common/ThemedIconButton";
-import CreateNewFolderIcon from "@mui/icons-material/CreateNewFolder";
-import RefreshIcon from "@mui/icons-material/Refresh";
-import UploadFileIcon from "@mui/icons-material/UploadFile";
-import UploadIcon from "@mui/icons-material/Upload";
-
-# Playground
-
-Playground allows you to try ffmpeg.wasm without any installation and
-development!
-
-:::tip Quick Start
-
-1. Wait for assets (~32 MB) downloading.
-2. Press Load Sample Files to download & add sample files.
-3. Press Run to convert an AVI file to MP4 file.
-4. Download output files.
-
-:::
-
-
- {() => {
- const Playground = require('@site/src/components/Playground').default;
- return
- }}
-
-
-
-
-:::tip
-Demo Video: [https://youtu.be/F01B0fV20QA](https://youtu.be/F01B0fV20QA)
-:::
-
-## How to Use :rocket:
-
-> It is recommended to read [Overview](/docs/overview) first to learn
-ffmpeg.wasm fundamentals.
-
-A typical flow to use ffmpeg.wasm is:
-
-#### Download and load JavaScript & WebAssembly assets
-
-The assets are downloaded automatically when you enter the Playground. You can
-choose to use multithreading version instead by click on the switch:
-
-
-
- {() => {
- const CoreSwitcher = require('@site/src/components/Playground/CoreSwitcher').default;
- return ;
- }}
-
-
-
-#### Load files to in-memory File System
-
-When ffmpeg.wasm is loaded and ready, you can upload files to its in-memory File
-System to make sure these files can be consumed by the ffmpeg.wasm APIs:
-
-
-
-
-
-- : Upload a media file.
-- : Upload a text file.
-- : Create a new folder.
-- : Refresh File System.
-
-> Press Load Sample Files to load a set of samples
-files.
-
-#### Run a command
-
-With files are ready in the File System, you can update arguments in the Editor
-and hit Run afterward:
-
-