A self-hosted media processing toolkit. Upload video, audio, or image files and get back exactly what you need - frames, audio tracks, optimized images, or metadata-stripped files - all processed locally, nothing sent to a third party.
| Tool | What it does |
|---|---|
| Video Frame Parser | Extract frames from a video at a chosen FPS as JPG or PNG |
| Sound Parser | Strip audio from a video and export as MP3, AAC, WAV, FLAC, or OGG |
| Image Optimizer | Batch-compress images with quality control and optional format conversion |
| Metadata Cleaner | Remove EXIF and embedded metadata from images and videos |
- Runtime - .NET 10 / ASP.NET Core MVC
- Media processing - FFmpeg (called via
System.Diagnostics.Processfrom C# services) - Frontend - Vanilla JS, no framework
- Containerization - Docker + Docker Compose
- .NET 10 SDK
- FFmpeg installed and available on
PATH
If you're using Docker, FFmpeg is installed automatically inside the container - no local install needed.
# Clone the repo
git clone <repo-url>
cd framedit
# Start the app
dotnet runThe app will be available at http://localhost:5050 (or the port shown in your terminal).
docker compose up --buildApp runs at http://localhost:5050.
Temporary files are written to /tmp/mediaration inside the container and mounted from the host via the volume in docker-compose.yml.
| Limit | Value |
|---|---|
| Max total upload size | 1 GB |
| Max files per request | 50 |
Controllers/ # MVC controllers, one per feature
Services/
VideoFrameParser/ # Frame extraction logic (FFmpeg)
SoundParser/ # Audio extraction logic (FFmpeg)
ImageOptimizer/ # Image compression and conversion
MetadataCleaner/ # EXIF/metadata stripping
Constants/
AppConstants.cs # Allowed formats, upload limits, file types
wwwroot/js/ # Client-side JS (one file per feature)
Views/ # Razor views
Video input (Frame Parser, Sound Parser, Metadata Cleaner): mp4 mov avi mkv webm flv wmv m4v mpeg mpg
Image input (Image Optimizer, Metadata Cleaner): jpg jpeg png gif bmp tiff tif webp
Audio output (Sound Parser): mp3 aac wav flac ogg
Image output (Image Optimizer): jpg png webp or keep original format