A multithreaded C# CLI for digital media processing using FFMPEG. Transcode as many files in parallel as your system can handle.
- Processing Multiple video files at once
- As many concurrent processes as your system can handle
- .NET 8.0 Runtime
- Go to the Releases page and Download the latest Version for your OS
- Open a Terminal/CMD Window
FFMP's usage is almost identical to FFMPEG, consider this simple example:
dotnet path/to/FFMP.dll --codec libx265 --preset fast -d "/path/to/input/files" --output-pattern "/path/to/output/files/{{name}}_compressed{{ext}}" --threads 2
Using FFMP for a single file doesn't really make sense. Use this tool if you have a folder of videos you want to process.
You can also use a text-file with paths to video files as an input like this:
dotnet path/to/FFMP.dll --codec libx265 --preset fast -t "/path/to/videos.txt" --output-pattern "/path/to/output/files/{{name}}_compressed{{ext}}" --threads 2
You can adjust your codec by using any codec that is installed on your system behind the --codec
parameter. Same goes for the preset in --preset
.
If you need to pass any other arguments to FFMPEG (like audio codecs, video bitrate, subtitle processing, etc.) you can do it like this:
dotnet path/to/FFMP.dll --codec libx265 --preset fast -t "/path/to/videos.txt" --output-pattern "/path/to/output/files/{{name}}_compressed{{ext}}" --threads 2 -- -crf 22 -pix_fmt yuv420p10le -c:a libopus -b:a 320k -c:s copy
Everything behind the --
indicator is passed directly to FFMPEG.
Introduced in Version 1.3.0, FFMP now features "Mass-Converting" Files. This takes advantage of everything FFMP already offers and enables Mass-Converting files from one format to another. Not only can you provide directories or txt-files as sources, multiple videos are converted in parallel.
Converting using a directory
dotnet path/to/FFMP.dll --convert -d "/path/to/videos/directory" --output-format .mkv
Converting using a txt-file
dotnet path/to/FFMP.dll --convert -d "/path/to/videos.txt" --output-format .mkv
If you want to see all of FFMPEGs output, just use the --verbose
flag.
For more ffmpeg options, visit ffmpeg's documentation.
Contributions, issues, and feature requests are welcome!
Feel free to check the issues page.
- Fork the project.
- Create your feature branch (
git checkout -b feature/AmazingFeature
). - Commit your changes (
git commit -m 'Add some AmazingFeature'
). - Push to the branch (
git push origin feature/AmazingFeature
). - Open a pull request.
See CONTRIBUTING.md for more details.
This project is licensed under the MIT License. See the LICENSE file for details.
For any inquiries, feel free to reach out:
- email: hi@massimo.gg
- X: massimo-rnd
- Discord