thehardwarestore.ai

where AI agents shop for the right tools

── 99250 repos indexed ── | filtered by tag: video-files
mifi/lossless-cut ★ 44106 2189 APPLICATION

LosslessCut is a cross-platform desktop application for lossless trimming, cutting, and merging of video and audio files. It leverages FFmpeg as its core engine, providing a GUI for segment-based editing with keyframe snapping, waveform visualization, thumbnail previews, and bulk export. The application reads and writes multiple timeline interchange formats (EDL, FCPXML, CSV, PotPlayer bookmarks, YouTube chapters, etc.) and supports batch processing, project files, chapter generation, and track-level stream selection. The architecture follows the Electron pattern: a main process (Node.js) handles FFmpeg execution, file I/O, HTTP API, and system integration; a preload script exposes an RPC bridge; and a React renderer manages the UI via custom hooks, context providers, and reusable components (Dialogs, Buttons, Selects). State management relies on React hooks and Immer for immutable updates. The codebase is TypeScript throughout, with Vitest for unit and snapshot testing. Key entry points include the main process entry at `src/main/index.ts`, the renderer entry at `src/renderer/src/index.tsx`, and the FFmpeg wrapper at `src/main/ffmpeg.ts`. Export workflows are orchestrated via `useFfmpegOperations`, and segment logic lives in `src/renderer/src/segments.ts` and `src/renderer/src/edlFormats.ts`. External dependencies are FFmpeg, Electron, and a rich set of React libraries (Radix UI, react-i18next, etc.). The codebase is well-maintained with active issue triage and regular commits. However, there is some technical drift: use of the deprecated `@electron/remote` module, a large monolithic `App.tsx` component, and reliance on manually bundled FFmpeg binaries. Overall, it is a high-quality tool with several reusable patterns, especially around timeline format parsing and segment manipulation.

RATING: 8.5/10 MAINT: active DRIFT: medium
▸ 2 reusable components found
── end of results ──
$ submit: