$ show argorar/WebMConverter
This repository contains a Windows desktop application for converting and editing video files, primarily targeting the WebM format. Built with Windows Forms and targeting .NET Framework 4.8, the application provides a graphical user interface for applying various video filters (trim, crop, resize, overlay, subtitles, etc.) and encoding the output using FFmpeg. It includes features for downloading online videos (via yt-dlp), uploading results to services like Gfycat and ShareX, and checking for application and dependency updates. The application follows a modular design where each video filter is implemented as a separate user control responsible for generating its corresponding processing script (AviSynth or FFmpeg). These filters are combined during encoding to form a complex processing pipeline. Additional notable components include a frame caching system for efficient video preview and a robust process-wrapping pattern for integrating external command-line tools. Despite its functional completeness, the project has been explicitly frozen by its maintainers, with no further updates planned. This results in high technical drift due to dependencies on outdated technologies (such as 32-bit AviSynth) and the inability to adapt to changes in online video platforms or evolving codec standards.
The LLM identified 3 files worth highlighting for reuse:
Provides a UI for configuring video trim settings and generates the corresponding AviSynth or FFmpeg filter string. This component is decoupled from the main processing logic, adhering to a plugin-like architecture where each filter is responsible for its own user interface and script generation.
Implements a thread-safe frame cache using a ConcurrentDictionary to store recently decoded video frames. This avoids redundant frame extraction during video preview and scrubbing, significantly improving UI responsiveness. The cache implements a size limit to prevent excessive memory usage.
Wraps the FFmpeg command-line tool, handling process execution, argument building, and error output capture. This pattern is consistently applied across other external tools (FFprobe, YoutubeDL) in the codebase, demonstrating a reusable and maintainable approach to integrating command-line utilities into a .NET application.