{"id":13905903,"url":"https://github.com/daem-on/fwf","last_synced_at":"2026-01-21T15:08:10.698Z","repository":{"id":90280186,"uuid":"139483501","full_name":"daem-on/fwf","owner":"daem-on","description":"HTML video editor with FFmpeg","archived":false,"fork":false,"pushed_at":"2021-01-18T13:58:59.000Z","size":98770,"stargazers_count":250,"open_issues_count":2,"forks_count":44,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-11-25T14:46:59.207Z","etag":null,"topics":["ffmpeg","javascript","javascript-applications","video-editor","video-processing"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/daem-on.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-07-02T19:08:38.000Z","updated_at":"2024-10-31T09:25:15.000Z","dependencies_parsed_at":"2023-11-13T15:05:17.959Z","dependency_job_id":null,"html_url":"https://github.com/daem-on/fwf","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/daem-on/fwf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daem-on%2Ffwf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daem-on%2Ffwf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daem-on%2Ffwf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daem-on%2Ffwf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/daem-on","download_url":"https://codeload.github.com/daem-on/fwf/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daem-on%2Ffwf/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265696639,"owners_count":23812814,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ffmpeg","javascript","javascript-applications","video-editor","video-processing"],"created_at":"2024-08-06T23:01:26.088Z","updated_at":"2026-01-21T15:08:10.692Z","avatar_url":"https://github.com/daem-on.png","language":"JavaScript","readme":"# fwf: FFmpeg video editor\n**If you are a consumer considering using this software, don't.** This was an experiment and important features don't work or are missing. [Olive](https://www.olivevideoeditor.org/) is an open source video editor that you may be interested in. Read the *Inherent problems* section for more information.\n\n\n![main screenshot](https://i.imgur.com/ZKp3CaW.png)\n\nVideo editing software in JavaScript, made with Electron, on top of FFmpeg using [fluent-ffmpeg](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg). Provides a simple GUI for editing videos with FFmpeg with a timeline, preview, and filter editor.\n\nArchitecture:\n- Fluent-ffmpeg in the main process, starting ffmpeg processes as needed.\n- GUI in the renderer process, stores all of the information and only sends render instructions to main over IPC.\n- Express HTTP server in main process for streaming preview video.\n\n### Filter editor\n![filter editor screenshot](https://imgur.com/G2tLNam.png)\n\nJSON editor GUI using [jsoneditor](https://github.com/josdejong/jsoneditor/), with presets. This lets you edit the filters that are passed to fluent-ffmpeg, which then turns them into FFmpeg options. This means you can use **any** video filter the FFmpeg binary supports.\n\n### Inherent problems\nThis was an experiment to see if a consumer grade video editor is possible to make with HTML and JavaScript. I would say it is possible, the result just isn't very good. It's also obviously not pure JavaScript, since it uses FFMpeg as a backend. Problems:\n\n1. Previews are slow, unreliable and limited, because the preview is rendered in FFMpeg and streamed through an internal server to the renderer. I also haven't been able to implement the streams feature, which would make it capable of rendering multiple clips chained together for the preview.\n2. FFMpeg wasn't designed for a consumer grade video editing app.  HTML \u0026 JavaScript weren't designed for making desktop apps.\n3. The FFMpeg binary has to be bundled with the app for easier installation, and this means using a custom build configuration. Into this custom configuration I haven't been able to integrate the Vue compilation that would be necessary to make the interface entirely Vue-based.\n\nIf you would like to use it anyway, you're free to do so. If you would like to help out with the development, PRs are greatly appreciated.\n\n### Running and building from source\nTo run from source, clone this repository, and inside the `app/` directory, install the dependencies with `npm install` or `yarn`. You have to provide your own ffmpeg binaries for running and building, so download the `ffmpeg` **and** `ffprobe` executables from an ffmpeg distribution of your choice. Both executables are required. You then place these inside `app/bin/` in a folder matching your architecture: by default, *darwin* and *win64* are supported. This is detected in `app/index.js`, so if your architecture is not *darwin* or *win64* you have to modify that file otherwise it won't start. Then you run `npm run start` or `yarn start` inside `app/` to start fwf.\n\nBuild with electron-builder using `app/node_modules/.bin/electron-builder` in the root directory. The build setup is quite complicated, because of the fact that the ffmpeg binaries need to be available at runtime, so there are a lot of ways it can go wrong.\n\n### License\nReleased under the MIT license, see LICENSE.\n\n![splash](https://imgur.com/eYh7yqY.png)\n","funding_links":[],"categories":["HarmonyOS"],"sub_categories":["Windows Manager"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaem-on%2Ffwf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdaem-on%2Ffwf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaem-on%2Ffwf/lists"}