Skip to content

About

C# | MVC | FFmpeg | Run it locally with Docker. Parse videos frame by frame. Delete metadata. Parse the audio. Optimize your media.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Mediaration

.NET ASP.NET Core FFmpeg Docker License

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.

Features

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

Tech Stack

  • Runtime - .NET 10 / ASP.NET Core MVC
  • Media processing - FFmpeg (called via System.Diagnostics.Process from C# services)
  • Frontend - Vanilla JS, no framework
  • Containerization - Docker + Docker Compose

Requirements

If you're using Docker, FFmpeg is installed automatically inside the container - no local install needed.

Getting Started

Run locally

# Clone the repo
git clone <repo-url>
cd framedit

# Start the app
dotnet run

The app will be available at http://localhost:5050 (or the port shown in your terminal).

Run with Docker

docker compose up --build

App 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.

Upload Limits

Limit Value
Max total upload size 1 GB
Max files per request 50

Project Structure

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

Supported Formats

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

About

C# | MVC | FFmpeg | Run it locally with Docker. Parse videos frame by frame. Delete metadata. Parse the audio. Optimize your media.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages