/Viridian

The ultimate lossy/lossless video editor to fit all your needs, made with Angular, Electron and Tailwind

Primary LanguageTypeScript

Viridian is an FFmpeg-based, feature-rich video editor, offering a wide variety of both lossless and lossy operations. It allows you to easily manipulate video files without having to deal with the command line and FFmpeg's complexity, ensuring always the best output quality possible.

Viridian is also an excellent tool for advanced users, as it enables you to manually edit the final output command as you wish, without holding back any little nuances you might like to control.

Features

  • Fast, as it uses native FFmpeg binaries for video processing
  • Simple, yet powerful video player, with support for thumbnails, various navigation options (frame advance, between clips, keyframes, etc.) and metadata correction (aspect ratio, rotation)
  • Lossy visual operations such as crop, rotate, flip/mirror and scale
  • Open multiple files at once, allowing lossless and lossy concatenation
  • Several video cut modes: lossy, lossless (normal and keyframe) and smart (lossy + lossless)
  • Rich cut manipulation: drag, resize, snap, split and manually edit video clips
  • Export clips to individual files or merge everything together
  • Extensive video format and encoding output settings
  • View current encoding status (lossy/lossless/mixed)
  • View and modify the final output command
  • File tracks and metadata viewer
  • Frame capture/screenshot
  • Remove audio tracks
  • Clear file metadata

Documentation | How to Use

Visit the wiki page to have a deeper understanding on how Viridian works, all the available functionality, and how it uses FFmpeg under the hood.

The documentation also goes into some basic and advanced video processing concepts in a simple yet explanatory manner, something that's usually not very common to find online, and will help you to understand why some things are the way they are.

Screenshots

Development | Building

Angular and Electron don't play very nice together out of the box, so it's necessary to start the Angular server first, and then the Electron one:

npm run start:angular    # Start Angular server.
npm run start:electron   # Start Electron server.

To build the project:

npm run build            # Build Angular and Electron together.

npm run build:angular    # Build Angular app.
npm run build:electron   # Build Electron app.

And finally to package (currently only Zip files for Linux and Windows):

npm run package          # Package for current target platform.

npm run package:linux    # Build and package for Linux.
npm run package:win32    # Build and package for Windows.

Viridian uses Electron Forge, and while it doesn't have the level of customization of Electron Builder, it's faster and makes Vite integration easier. This could change in the future.

Acknowledgements

  • FFmpeg, for being the backbone of, not only Viridian, but every single video processing program out there.
  • Gyan Doshi and John Van Sickle for the static FFmpeg binaries.
  • Resizable, for making the crop tool less of a pain to develop, and allowing the editing flexibility of video clips.
  • LosslessCut, for the initial inspiration, and for having some good design aspects I shamelessly borrowed from.