惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
宝玉的分享
宝玉的分享
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
WordPress大学
WordPress大学
V
V2EX
Apple Machine Learning Research
Apple Machine Learning Research
J
Java Code Geeks
腾讯CDC
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Engineering at Meta
Engineering at Meta
L
LangChain Blog
Jina AI
Jina AI
博客园 - 叶小钗
B
Blog RSS Feed
Recent Announcements
Recent Announcements
H
Help Net Security
小众软件
小众软件
大猫的无限游戏
大猫的无限游戏
B
Blog
云风的 BLOG
云风的 BLOG
Blog — PlanetScale
Blog — PlanetScale
D
DataBreaches.Net
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
罗磊的独立博客

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店
GitHub - notune/velo: A fast, friendly non-linear video e...
leumon · 2026-06-13 · via Hacker News: Show HN

A fast, friendly non-linear video editor for Linux, Windows and macOS, built with C++20, Qt 6 and FFmpeg. Velo follows the familiar Premiere-style layout — project bin, media-preview/sequence monitors, effect controls and a multi-track timeline — while staying small, hackable and quick.

Velo editing the showcase project

The bundled showcase project: nested sequences, picture-in-picture with keyframed rotation + Gaussian Blur + Vignette, titles with outlines, cross dissolves and fades, audio waveforms with volume keyframes — generate it yourself with dist/demo/make_demo.sh.

Features

  • Media — import video, audio, images and SVG (drag files into the Project panel or Ctrl+I); thumbnails in the bin; double-click or drop onto the monitor to open it in the Media Preview; offline media is flagged and can be re-pointed via right-click → Locate / Replace File….
  • Media Preview monitor — keeps a dropdown of loaded media (✕ unloads), mini-timeline with draggable in/out brackets (I / O at the playhead); drag the picture into the timeline to insert just the in→out range. Stills show without a transport.
  • Sequences — create manually with delivery presets (YouTube 1080p/4K, Cinema 4K DCI, TikTok/Reels, Instagram Square, …) or right-click a clip → New Sequence from Clip. Multiple sequences open as timeline tabs.
  • Timeline — unlimited video/audio tracks; magnetic snapping (toggleable, Alt bypasses); drag clips between tracks; edge trimming with bracket cursors; razor tool; split selected (S) or all tracks (Shift+S); ripple delete (Alt+Del); copy/paste; per-track mute/hide, lock and rename; rubber-band selection; sequence tabs.
  • Linked A/V — video and its audio move, trim, split and delete together; Unlink from the context menu when needed.
  • Nesting ("Chain") — select clips → Alt+C collapses them into one nested-sequence clip; double-click it to open the nested sequence in a tab.
  • Monitor interaction — move the selected clip directly in the Sequence monitor, scale with corner handles (uniform by default, Shift distorts), rotation/opacity in Effect Controls; drag any numeric label in Effect Controls left/right to scrub its value (Shift = 10×). Preview quality: Full, 1/2, 1/4, 1/8.
  • Keyframes everywhere — position, scale, rotation, opacity, volume, track volume and every effect parameter animate via the stopwatch/diamond controls; smooth-step interpolation.
  • Audio — waveforms on clips, a draggable volume line (Ctrl+click adds keyframes, drag dots to shape, double-click removes), per-track volume with sequence-time keyframes, clip speed with resampled audio or pitch-preserving time-stretch ("Preserve pitch" in Effect Controls ▸ Time); audible scrubbing while dragging the playhead (Playback ▸ Audio Scrubbing).
  • Effects (modular) — Gaussian Blur, Color Correction (brightness / contrast / saturation / temperature), Color Grade (exposure, contrast, highlights/shadows, whites/blacks, white balance, hue, saturation, vibrance, lift/gamma/gain), Sharpen, Black & White, Vignette, Flip, audio Gain; drag onto clips or double-click to apply; reorder-safe parameter UI is generated from the effect description.
  • Transitions — Cross Dissolve, Fade, Dip to Black; drag onto a clip edge or use the context menu; adjust the length by dragging the wedge in the timeline or in Effect Controls.
  • TitlesT adds a text clip (font, size, bold/italic, fill colour, outline); text clips are normal clips: move, trim, animate, effect.
  • Export — H.264/H.265 (x264/x265), NVENC hardware encoding when available, VP9, AV1 (SVT), ProRes, or audio-only; CRF or bitrate; any resolution/fps; renders through a piped ffmpeg process with progress and cancel.
  • Projects — portable JSON .velo files; full snapshot undo/redo (Ctrl+Z / Ctrl+Shift+Z); unsaved-changes guard.
  • Custom keybindings — every action is rebindable in Edit ▸ Keyboard Shortcuts; stored per-user.

Download (no installation required)

Prebuilt, fully self-contained bundles for Linux, Windows and macOS are on the releases page — Qt, the FFmpeg libraries and the ffmpeg export binary are bundled at the exact versions Velo is developed against, so nothing else needs to be installed:

  • LinuxVelo-<ver>-linux-x86_64.AppImage: chmod +x and run (on systems without FUSE add --appimage-extract-and-run); or the -portable.tar.xz: extract anywhere and run ./AppRun. Needs glibc ≥ 2.39 (Ubuntu 24.04+, any 2024+ rolling distro).
  • WindowsVelo-<ver>-windows-x86_64.zip: extract, run velo.exe.
  • macOS (Apple Silicon)Velo-<ver>-macos-arm64.dmg: drag Velo to Applications. The build is unsigned, so on first launch right-click the app → Open (or xattr -d com.apple.quarantine /Applications/Velo.app).

Every bundle is smoke-tested in CI (decode → composite → mix → export) on its target platform before a release is published. Versions are pinned in .github/workflows/build.yml; the app version comes from CMakeLists.txt and releases are cut by pushing the matching v<version> tag.

Building

Dependencies (Arch/CachyOS package names):

pacman -S qt6-base qt6-multimedia qt6-svg ffmpeg cmake ninja gcc pkgconf
cmake -B build -G Ninja
ninja -C build
./build/velo            # optionally: ./build/velo project.velo

Install system-wide (binary, .desktop entry, icon):

sudo cmake --install build --prefix /usr

A headless engine smoke test (decode → composite → mix → save/load → export) is built in:

QT_QPA_PLATFORM=offscreen ./build/velo --selftest

Default shortcuts

Key Action
Space Play / pause
/ Step one frame (Shift = 5 frames)
Home / End Go to start / end
S / Shift+S Split selection / all tracks at playhead
Del / Alt+Del Delete / ripple delete
Alt+C Chain selection into a nested sequence
V / C Selection / razor tool
N Toggle magnetic snapping
T Add text at playhead
= / - / \ Zoom in / out / fit
Ctrl+I / Ctrl+N / Ctrl+M Import / new sequence / export
Ctrl+K Keyboard shortcut editor

(Ctrl+wheel zooms the timeline at the cursor; plain wheel scrolls.)

Adding a new effect

Effects are self-contained descriptions in src/effects/Effects.cpp. Register one and the effects browser, drag-and-drop, Effect Controls UI, keyframing, serialization and rendering all pick it up automatically:

registerEffect({
    "posterize", "Posterize", "Stylize",
    {{"levels", "Levels", 2, 32, 6, 1, 0}},
    [](QImage &img, const QMap<QString, double> &p, double scale) {
        // mutate img in place; p has the keyframe-interpolated values
    }});

Architecture

src/core      Project / Sequence / Track / Clip model, keyframes,
              JSON (de)serialization, Document (selection, undo, edit ops)
src/media     FFmpeg probe/decode (video + audio), waveform peaks,
              thumbnails, per-thread decoder caches
src/effects   modular effect registry + built-ins
src/engine    Compositor (frame rendering), AudioMixer/AudioEngine
              (sample-accurate mixing + playback), RenderWorker
              (coalescing preview thread), Exporter (ffmpeg pipe)
src/ui        main window, project bin, effects browser, monitors,
              timeline, effect controls, dialogs, dark theme

The model is shared between the GUI, the preview render thread, the audio callback and the exporter behind a single recursive mutex; preview requests coalesce so scrubbing never queues stale frames, and decoders only seek when playback jumps. When one file is needed at two distant positions every frame (cross dissolves, footage reused across nests) the cache opens an extra decoder "lane" per position so both streams decode sequentially.