https://github.com/pulkitpareek18/media-processing-pipeline
FFmpeg-based C/C++ pipeline that converts one source video into multiple lower-resolution variants with automated resolution detection and structured output naming.
https://github.com/pulkitpareek18/media-processing-pipeline
bitrate-ladder c cli cpp ffmpeg ffprobe media-pipeline transcoding video-processing
Last synced: 2 months ago
JSON representation
FFmpeg-based C/C++ pipeline that converts one source video into multiple lower-resolution variants with automated resolution detection and structured output naming.
- Host: GitHub
- URL: https://github.com/pulkitpareek18/media-processing-pipeline
- Owner: pulkitpareek18
- Created: 2025-08-25T12:18:11.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2026-03-01T11:55:57.000Z (4 months ago)
- Last Synced: 2026-03-01T14:58:43.071Z (4 months ago)
- Topics: bitrate-ladder, c, cli, cpp, ffmpeg, ffprobe, media-pipeline, transcoding, video-processing
- Language: C
- Size: 52.9 MB
- Stars: 2
- Watchers: 0
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# Media Processing Pipeline
[](https://github.com/pulkitpareek18/media-processing-pipeline/actions/workflows/ci.yml)



## Release Snapshot (March 2026)
- Status: Active
- Type: CLI video processing utility
- Core tooling: `ffprobe` + `ffmpeg`
- CI checks: C build + C++ syntax check
## Demo Card
[](https://github.com/pulkitpareek18/media-processing-pipeline/blob/main/video.mp4)
CLI utility to generate lower-resolution variants from a single source video using `ffprobe` + `ffmpeg`.
## What It Does
Given one input video file, the pipeline:
1. Detects source resolution with `ffprobe`
2. Creates an output folder named after the source file stem
3. Copies the original source into that folder
4. Produces subordinate resolutions (for example: 1080p -> 720p, 480p, 360p, 240p, 144p)
Output naming format:
```text
/ .mp4
```
## Implementations
- `process_video.c` (cross-platform oriented C implementation)
- `process_video.cpp` (C++ implementation; currently tuned for Windows `_popen`)
## Prerequisites
- `ffmpeg` available on `PATH`
- `ffprobe` available on `PATH`
- C/C++ compiler (depending on implementation)
## Build
### C (macOS/Linux)
```bash
cc process_video.c -o process_video
```
### C (Windows, MinGW)
```bash
gcc process_video.c -o process_video.exe
```
### C++ (Windows, MinGW)
```bash
g++ process_video.cpp -std=c++17 -o process_video_cpp.exe
```
## Usage
```bash
./process_video input.mp4
```
Windows:
```bash
process_video.exe input.mp4
```
## Example
Input:
```text
video.mp4 (1080p)
```
Generated:
```text
video/video 1080.mp4
video/video 720.mp4
video/video 480.mp4
video/video 360.mp4
video/video 240.mp4
video/video 144.mp4
```
## Notes
- The tool currently preserves audio stream via `-c:a copy`.
- Processing time depends on source duration, resolution, and machine performance.