https://github.com/massimo-rnd/ffmp
âĄA multithreaded C# CLI for digital media processing using FFMPEG. Transcode as many files in parallel as your system can handle.
https://github.com/massimo-rnd/ffmp
audio-processing av1 cli cpu-encoding encoding ffmpeg ffmpeg-wrapper gpu-encoding h264 h265 media-processing multithreading parallel svt-av1 transcoding video-processing
Last synced: 6 months ago
JSON representation
âĄA multithreaded C# CLI for digital media processing using FFMPEG. Transcode as many files in parallel as your system can handle.
- Host: GitHub
- URL: https://github.com/massimo-rnd/ffmp
- Owner: massimo-rnd
- License: mit
- Created: 2025-01-26T11:14:21.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-02-08T15:14:57.000Z (8 months ago)
- Last Synced: 2025-03-18T15:44:35.571Z (7 months ago)
- Topics: audio-processing, av1, cli, cpu-encoding, encoding, ffmpeg, ffmpeg-wrapper, gpu-encoding, h264, h265, media-processing, multithreading, parallel, svt-av1, transcoding, video-processing
- Language: C#
- Homepage: https://massimo.gg/ffmp/
- Size: 56.6 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# FFMP - FFMPEG Multi-Processing






## đ Overview
A multithreaded C# CLI for digital media processing using FFMPEG. Transcode as many files in parallel as your system can handle.
## đ¯ Features
- Processing Multiple video files at once
- As many concurrent processes as your system can handle## âšī¸ Requirements
- .NET 8.0 Runtime## đ ī¸ Installation
1. Go to the [Releases](https://github.com/massimo-rnd/FFMP/releases/latest) page and Download the latest Version for your OS
2. Open a Terminal/CMD Window## đģ Usage
### General Usage
FFMP's usage is almost identical to FFMPEG, consider this simple example:
```bash
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:
```bash
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:
### Advanced Arguments for FFMPEG
```bash
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.### Mass-Converting Files
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**
```bash
dotnet path/to/FFMP.dll --convert -d "/path/to/videos/directory" --output-pattern "/path/to/output/files/{{name}}_compressed.mkv"
```**Converting using a txt-file**
```bash
dotnet path/to/FFMP.dll --convert -d "/path/to/videos.txt" --output-pattern "/path/to/output/files/{{name}}_compressed.mkv"
```If you want to see all of FFMPEGs output, just use the `--verbose` flag.
For more ffmpeg options, visit [ffmpeg's documentation](https://ffmpeg.org/ffmpeg.html).
## đ¤ Contributing
Contributions, issues, and feature requests are welcome!
Feel free to check the [issues page](https://github.com/massimo-rnd/FFMP/issues).1. Fork the project.
2. Create your feature branch (`git checkout -b feature/AmazingFeature`).
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`).
4. Push to the branch (`git push origin feature/AmazingFeature`).
5. Open a pull request.## đ License
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
## đ Repository Metrics


---
### đ Acknowledgments
- [Inspiration for this Project comes from CodeF0x](https://github.com/CodeF0x)
- [FFZAP - The same thing just based on RUST](https://github.com/CodeF0x/ffzap)---
### đ Contact
For any inquiries, feel free to reach out:
- email: [hi@massimo.gg](mailto:hi@massimo.gg)
- X: [massimo-rnd](https://x.com/massimo-rnd)
- [Discord](https://discord.gg/wmC5AA6c)