OpenCut Video Editor

repository·main·Indexed 10 days ago

https://github.com/opencut-app/opencut

A free and open-source video editor for web, desktop, and mobile platforms. Currently being rewritten with a Rust core to support a plugin-first architecture, headless automation, and an MCP server for AI agents. Version 0.3.0 introduces features such as a Graph Editor with Bezier handles, layer masking, custom canvas sizes, and independent animation of X and Y positions.

Tokens
1.4K
Snippets
4
Records
12
Agent score
88%

What's inside OpenCut

  1. Overview of the OpenCut rewrite architecture

    main

    OpenCut is currently undergoing a ground-up rewrite designed to provide a unified experience across web, desktop, and mobile using a Rust core.

    Key architectural features being implemented include:

    • Plugin-first architecture: Enables first-class third-party plugins.
    • Editor API: For programmatic interaction with the editor.
    • MCP Server: For integration with AI agents.
    • Headless mode: For automation and batch rendering.
    • Scripting tab: Direct scripting capabilities within the editor interface.
  2. Configure canvas size and backgrounds

    main

    In version 0.3.0, you can customize the project canvas environment:

    • Custom Canvas Size: Instead of using presets, you can enter any specific width and height.
    • Canvas Backgrounds: Set a background using a blur, solid color, or gradient. This is configured via the new Background tab in the Settings panel.
    • Preview Zoom & Panning: Use zoom to work on fine details and pan to navigate the canvas when zoomed in.
  3. Set up the OpenCut development environment

    main

    OpenCut uses proto for toolchain management. To develop with OpenCut, you must first install proto and then use it to install the pinned tools defined in the repository's .prototools file.

    1. Install proto

    Linux, macOS, WSL:

    bash <(curl -fsSL https://moonrepo.dev/install/proto.sh)

    Windows (PowerShell):

    irm https://moonrepo.dev/install/proto.ps1 | iex

    Note: If shims fail to run on Windows, you may need to allow local scripts: Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

    2. Install pinned tools

    From the repository root, run:

    proto use

    3. Run development servers

    Use moon to start the different components of the application:

    • Web Editor: moon run web:dev (runs on localhost:5173)
    • API Server: moon run api:dev (runs on localhost:8787)
    • Desktop App: moon run desktop:dev (refer to apps/desktop/README.md for specific details)
    proto use
    moon run web:dev
  4. Timeline selection shortcuts

    main

    When performing drag-selections in the timeline, you can use standard modifiers to modify your selection:

    • Shift + Drag: Adds to your existing selection instead of replacing it.
    • Ctrl + Drag: Adds to your existing selection instead of replacing it.
  5. Use masks to hide or reveal layer parts

    main

    In version 0.3.0, you can apply masks to any video or image layer to control visibility.

    Available Mask Shapes:

    • Split
    • Rectangle
    • Ellipse
    • Star
    • Heart
    • Diamond
    • Cinematic bars

    How to adjust masks:

    • Properties Panel: Adjust position, size, rotation, feather, and stroke.
    • Preview Window: Drag the handles directly in the preview area.
  6. Control audio and video volume and speed

    main

    Version 0.3.0 introduced dedicated controls for media properties:

    • Volume Control: Available for both audio and video elements.
    • Speed Control: Available for video and audio clips. Includes a 'maintain pitch' option to prevent audio from changing pitch (the 'chipmunk' effect) when the playback rate is modified.
  7. Build and check OpenCut Desktop

    main

    Use the following moon commands to manage the OpenCut Desktop build lifecycle:

    • moon run desktop:check: Runs cargo check to verify the code.
    • moon run desktop:build: Runs cargo build --release to create a production build.
    • moon run desktop:dev: Runs cargo run for development.
    moon run desktop:check
    moon run desktop:build
  8. Run OpenCut Desktop in development mode

    main

    OpenCut Desktop uses moon as a task runner. To run the application in development mode, use the desktop:dev command. Note that the first build will compile GPUI from source, which may take a significant amount of time.

    Ensure you have the correct Rust version installed using proto use as specified in the .prototools file at the repository root.

    moon run desktop:dev
  9. Animate properties with the Graph Editor

    main

    You can now create smooth transitions between keyframes using the Graph Editor.

    Key Features:

    • Bezier Handles: Shape the easing between keyframes by dragging bezier handles in the graph editor.
    • Independent Animation: Position X and Y can now be animated independently.
    • Keyframe Management: Keyframes can be copied and pasted between different elements.
    • Expanded View: To see all animated properties for a clip in the timeline, right-click a clip and select "Expand keyframes".
  10. Run the OpenCut Desktop application

    main

    The OpenCut Desktop application is built using the gpui framework. The entrypoint initializes the application environment and opens the main window.

    On Linux systems running within WSL (Windows Subsystem for Linux), the application includes a safety mechanism to handle compatibility issues between GPUI and WSLg by automatically removing the WAYLAND_DISPLAY environment variable if both X11 and Wayland are configured. This prevents panics related to xdg_wm_base version mismatches.

    To run the application, use the standard cargo command for the desktop package:

    cargo run --package opencut-desktop
  11. Platform requirements for OpenCut Desktop

    main

    OpenCut Desktop is built with GPUI and has specific platform requirements for rendering and windowing:

    macOS

    • Requires Xcode command line tools (uses Metal renderer).

    Windows

    • No extra dependencies (uses Win32 + DirectWrite).

    Linux

    • Renders via Vulkan (Blade).
    • Supports Wayland or X11 (both enabled by default).
    • Required System Packages (Debian/Ubuntu):
      • libvulkan1 (plus working Vulkan drivers)
      • libwayland-dev
      • libx11-xcb-dev
      • libxkbcommon-x11-dev
      • libfontconfig-dev
      • A C toolchain and cmake.

    WSL2/WSLg

    • Uses XWayland automatically when available.
    • Note: GPUI 0.2.2 requires xdg_wm_base v2–5, while WSLg advertises v1.