@mediaproc/cli 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +21 -14
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +2 -0
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/batch.d.ts +3 -0
- package/dist/commands/batch.d.ts.map +1 -0
- package/dist/commands/batch.js +278 -0
- package/dist/commands/batch.js.map +1 -0
- package/dist/commands/benchmark.d.ts +3 -0
- package/dist/commands/benchmark.d.ts.map +1 -0
- package/dist/commands/benchmark.js +126 -0
- package/dist/commands/benchmark.js.map +1 -0
- package/dist/commands/compare.d.ts +3 -0
- package/dist/commands/compare.d.ts.map +1 -0
- package/dist/commands/compare.js +104 -0
- package/dist/commands/compare.js.map +1 -0
- package/dist/commands/delete.d.ts.map +1 -1
- package/dist/commands/delete.js +2 -0
- package/dist/commands/delete.js.map +1 -1
- package/dist/commands/detect.d.ts +6 -0
- package/dist/commands/detect.d.ts.map +1 -0
- package/dist/commands/detect.js +92 -0
- package/dist/commands/detect.js.map +1 -0
- package/dist/commands/doctor.d.ts +3 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +222 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +2 -0
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/history.d.ts +3 -0
- package/dist/commands/history.d.ts.map +1 -0
- package/dist/commands/history.js +84 -0
- package/dist/commands/history.js.map +1 -0
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +2 -0
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/plugins.d.ts.map +1 -1
- package/dist/commands/plugins.js +2 -0
- package/dist/commands/plugins.js.map +1 -1
- package/dist/commands/remove.d.ts.map +1 -1
- package/dist/commands/remove.js +2 -0
- package/dist/commands/remove.js.map +1 -1
- package/dist/commands/search.d.ts +3 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +193 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/stats.d.ts +3 -0
- package/dist/commands/stats.d.ts.map +1 -0
- package/dist/commands/stats.js +157 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/template.d.ts +3 -0
- package/dist/commands/template.d.ts.map +1 -0
- package/dist/commands/template.js +190 -0
- package/dist/commands/template.js.map +1 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +2 -0
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/watch.d.ts +3 -0
- package/dist/commands/watch.d.ts.map +1 -0
- package/dist/commands/watch.js +108 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/commands/workspace.d.ts +3 -0
- package/dist/commands/workspace.d.ts.map +1 -0
- package/dist/commands/workspace.js +208 -0
- package/dist/commands/workspace.js.map +1 -0
- package/dist/history-manager.d.ts +27 -0
- package/dist/history-manager.d.ts.map +1 -0
- package/dist/history-manager.js +84 -0
- package/dist/history-manager.js.map +1 -0
- package/dist/plugin-api.d.ts +6 -7
- package/dist/plugin-api.d.ts.map +1 -1
- package/dist/plugin-manager.d.ts +6 -0
- package/dist/plugin-manager.d.ts.map +1 -1
- package/dist/plugin-manager.js +27 -0
- package/dist/plugin-manager.js.map +1 -1
- package/package.json +5 -6
- package/LICENSE +0 -72
- package/README.md +0 -1530
- package/dist/__tests__/plugin-manager.test.d.ts +0 -2
- package/dist/__tests__/plugin-manager.test.d.ts.map +0 -1
- package/dist/__tests__/plugin-manager.test.js +0 -7
- package/dist/__tests__/plugin-manager.test.js.map +0 -1
- package/dist/commands/convert.d.ts +0 -7
- package/dist/commands/convert.d.ts.map +0 -1
- package/dist/commands/convert.js +0 -96
- package/dist/commands/convert.js.map +0 -1
- package/dist/commands/info.d.ts +0 -7
- package/dist/commands/info.d.ts.map +0 -1
- package/dist/commands/info.js +0 -117
- package/dist/commands/info.js.map +0 -1
- package/dist/commands/optimize.d.ts +0 -7
- package/dist/commands/optimize.d.ts.map +0 -1
- package/dist/commands/optimize.js +0 -196
- package/dist/commands/optimize.js.map +0 -1
- package/dist/commands/run.d.ts +0 -3
- package/dist/commands/run.d.ts.map +0 -1
- package/dist/commands/run.js +0 -16
- package/dist/commands/run.js.map +0 -1
- package/dist/commands/validate.d.ts +0 -3
- package/dist/commands/validate.d.ts.map +0 -1
- package/dist/commands/validate.js +0 -16
- package/dist/commands/validate.js.map +0 -1
package/README.md
DELETED
|
@@ -1,1530 +0,0 @@
|
|
|
1
|
-
# MediaProc
|
|
2
|
-
|
|
3
|
-
Universal media processing CLI with an extensible plugin architecture. One tool to process all your media - images, videos, audio, documents, and more.
|
|
4
|
-
|
|
5
|
-
[](https://opensource.org/licenses/MIT)
|
|
6
|
-
[](https://www.npmjs.com/package/@mediaproc/cli)
|
|
7
|
-
[](https://nodejs.org/)
|
|
8
|
-
[](https://www.typescriptlang.org/)
|
|
9
|
-
[](https://github.com/0xshariq/mediaproc)
|
|
10
|
-
[](CONTRIBUTING.md)
|
|
11
|
-
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## 📋 Table of Contents
|
|
15
|
-
|
|
16
|
-
- [The Problem](#-the-problem)
|
|
17
|
-
- [Our Solution](#-our-solution)
|
|
18
|
-
- [Current Status](#-current-status)
|
|
19
|
-
- [Features](#-features)
|
|
20
|
-
- [Quick Start](#-quick-start)
|
|
21
|
-
- [Available Plugins](#-available-plugins)
|
|
22
|
-
- [Plugin Terminology](#-plugin-terminology)
|
|
23
|
-
- [Documentation](#-documentation)
|
|
24
|
-
- [Examples](#-examples)
|
|
25
|
-
- [Development](#-development)
|
|
26
|
-
- [Roadmap](#-roadmap)
|
|
27
|
-
- [Contributing](#-contributing)
|
|
28
|
-
- [Community](#-community)
|
|
29
|
-
- [License](#-license)
|
|
30
|
-
|
|
31
|
-
---
|
|
32
|
-
|
|
33
|
-
## 🎯 The Problem
|
|
34
|
-
|
|
35
|
-
Media processing in modern development workflows is **fragmented and complex**:
|
|
36
|
-
|
|
37
|
-
### Current Pain Points
|
|
38
|
-
|
|
39
|
-
1. **Too Many Tools**
|
|
40
|
-
|
|
41
|
-
- FFmpeg for videos
|
|
42
|
-
- ImageMagick for images
|
|
43
|
-
- SoX for audio
|
|
44
|
-
- Ghostscript for PDFs
|
|
45
|
-
- Different tools for each media type
|
|
46
|
-
|
|
47
|
-
2. **Inconsistent Interfaces**
|
|
48
|
-
|
|
49
|
-
- Each tool has different command syntax
|
|
50
|
-
- Different parameter names and formats
|
|
51
|
-
- Steep learning curve for each tool
|
|
52
|
-
- Hard to remember all the commands
|
|
53
|
-
|
|
54
|
-
3. **Complex Workflows**
|
|
55
|
-
|
|
56
|
-
- Chaining multiple tools together
|
|
57
|
-
- Writing custom shell scripts
|
|
58
|
-
- Managing dependencies across tools
|
|
59
|
-
- Debugging is painful
|
|
60
|
-
|
|
61
|
-
4. **Lack of Flexibility**
|
|
62
|
-
|
|
63
|
-
- Hard to extend with custom processing
|
|
64
|
-
- No plugin ecosystem
|
|
65
|
-
- Difficult to integrate into CI/CD
|
|
66
|
-
- Limited automation capabilities
|
|
67
|
-
|
|
68
|
-
5. **Performance Issues**
|
|
69
|
-
- Manual parallelization
|
|
70
|
-
- No built-in batch processing
|
|
71
|
-
- Memory management challenges
|
|
72
|
-
- Inefficient for large files
|
|
73
|
-
|
|
74
|
-
### Real-World Scenarios
|
|
75
|
-
|
|
76
|
-
**Web Developer:** "I need to resize 100 images, convert to WebP, and optimize for web. Should I use Sharp? ImageMagick? Write a Node script? Use Gulp/Webpack?"
|
|
77
|
-
|
|
78
|
-
**Video Editor:** "I need to transcode videos, extract thumbnails, and create HLS streams. Do I write FFmpeg commands? Use a GUI tool? Build a custom pipeline?"
|
|
79
|
-
|
|
80
|
-
**DevOps Engineer:** "I need to automate media processing in CI/CD. How do I make it reliable, fast, and easy to maintain across different media types?"
|
|
81
|
-
|
|
82
|
-
**Content Manager:** "I need to batch process documents, add watermarks to images, and compress videos. I don't want to learn 5 different tools."
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## 💡 Our Solution
|
|
87
|
-
|
|
88
|
-
**MediaProc is a unified CLI that solves these problems:**
|
|
89
|
-
|
|
90
|
-
### Core Philosophy
|
|
91
|
-
|
|
92
|
-
🎯 **One Tool for Everything** - Process any media type with consistent commands
|
|
93
|
-
🔌 **Plugin Architecture** - Extend with official or community plugins
|
|
94
|
-
⚡ **Performance First** - Multi-threaded, streaming, optimized for large files
|
|
95
|
-
🎨 **Simple & Intuitive** - Clear commands, helpful errors, great DX
|
|
96
|
-
🔧 **Automation Ready** - Perfect for scripts, CI/CD, and workflows
|
|
97
|
-
🌍 **Community Driven** - Open source, extensible, third-party plugins welcome
|
|
98
|
-
|
|
99
|
-
### What Makes MediaProc Different
|
|
100
|
-
|
|
101
|
-
| Feature | Traditional Tools | MediaProc |
|
|
102
|
-
| ------------------ | -------------------------- | ------------------------------- |
|
|
103
|
-
| **Interface** | Different for each tool | Unified, consistent CLI |
|
|
104
|
-
| **Installation** | Install 5+ separate tools | One tool, add plugins as needed |
|
|
105
|
-
| **Learning Curve** | Learn each tool separately | Learn once, use everywhere |
|
|
106
|
-
| **Extensibility** | Limited or none | Built-in plugin system |
|
|
107
|
-
| **Performance** | Manual optimization | Auto-parallelization, streaming |
|
|
108
|
-
| **Automation** | Write custom scripts | Built-in pipeline workflows |
|
|
109
|
-
| **Community** | Separate ecosystems | Unified plugin marketplace |
|
|
110
|
-
|
|
111
|
-
### How It Works
|
|
112
|
-
|
|
113
|
-
```bash
|
|
114
|
-
# Traditional approach (multiple tools)
|
|
115
|
-
convert input.jpg -resize 1920x1080 output.jpg
|
|
116
|
-
ffmpeg -i input.mp4 -c:v h264 -crf 23 output.mp4
|
|
117
|
-
sox input.wav -r 44100 output.mp3
|
|
118
|
-
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -o output.pdf input.pdf
|
|
119
|
-
|
|
120
|
-
# MediaProc approach (one tool, consistent syntax)
|
|
121
|
-
mediaproc image resize input.jpg --width 1920 --height 1080
|
|
122
|
-
mediaproc video transcode input.mp4 --codec h264 --crf 23
|
|
123
|
-
mediaproc audio convert input.wav --samplerate 44100 --format mp3
|
|
124
|
-
mediaproc document compress input.pdf --quality high
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
---
|
|
128
|
-
|
|
129
|
-
## 📊 Current Status
|
|
130
|
-
|
|
131
|
-
**Version**: 0.6.0 (Beta - Production Ready!)
|
|
132
|
-
**Status**: ✅ Image plugin (51 commands) + ✅ Video plugin (6 commands) + Audio plugin (5 commands) + Universal CLI
|
|
133
|
-
**Next Release**: Audio & Document plugins (Q1 2026)
|
|
134
|
-
**Expected v1.0**: Q2 2026
|
|
135
|
-
|
|
136
|
-
### Plugin Management
|
|
137
|
-
|
|
138
|
-
MediaProc provides comprehensive plugin lifecycle management:
|
|
139
|
-
|
|
140
|
-
- `mediaproc list` - List all installed plugins with versions
|
|
141
|
-
- `mediaproc add <plugin>` - Install plugins from npm registry
|
|
142
|
-
- `mediaproc remove <plugin>` - Safely uninstall plugins
|
|
143
|
-
- `mediaproc delete <plugin>` - Delete plugins (alias for remove)
|
|
144
|
-
- `mediaproc update [plugin]` - Update plugin(s) to latest versions
|
|
145
|
-
- Without plugin name: updates all installed plugins
|
|
146
|
-
- With plugin name: updates specific plugin
|
|
147
|
-
- Shows version changes and update summary
|
|
148
|
-
- `mediaproc validate [plugin]` - Validate plugin installation and integrity
|
|
149
|
-
- Check plugin structure and dependencies
|
|
150
|
-
- Verify command registrations
|
|
151
|
-
- Detect issues before execution
|
|
152
|
-
|
|
153
|
-
### Universal Commands (Work Without Plugins)
|
|
154
|
-
|
|
155
|
-
Core CLI commands available immediately after installation:
|
|
156
|
-
|
|
157
|
-
**Media Operations:**
|
|
158
|
-
|
|
159
|
-
- `mediaproc convert <input> <output>` - Auto-detect and suggest the conversion
|
|
160
|
-
- `mediaproc info <file>` - Display comprehensive file information
|
|
161
|
-
- `mediaproc optimize <file>` - Analyze and suggest optimization strategies
|
|
162
|
-
|
|
163
|
-
**Help & Configuration:**
|
|
164
|
-
|
|
165
|
-
- `mediaproc help [command]` - Show help for commands
|
|
166
|
-
- `mediaproc init` - Initialize configuration file
|
|
167
|
-
- `mediaproc config` - Manage configuration settings
|
|
168
|
-
- `mediaproc run <command>` - Execute plugin commands
|
|
169
|
-
|
|
170
|
-
### Image Processing (@mediaproc/image)
|
|
171
|
-
|
|
172
|
-
**Install:** `mediaproc add image`
|
|
173
|
-
|
|
174
|
-
**51 Professional Commands Available:**
|
|
175
|
-
|
|
176
|
-
**Transform & Resize** (10 commands)
|
|
177
|
-
|
|
178
|
-
- `resize` - Resize with fit modes (cover, contain, fill, inside, outside)
|
|
179
|
-
- `crop` - Extract rectangular regions with positioning
|
|
180
|
-
- `rotate` - Any angle rotation with background control
|
|
181
|
-
- `flip` - Vertical mirroring (top-bottom)
|
|
182
|
-
- `flop` - Horizontal mirroring (left-right)
|
|
183
|
-
- `auto-orient` - Auto-rotate based on EXIF orientation
|
|
184
|
-
- `affine` - Apply affine transformation matrix (scale, shear, reflect)
|
|
185
|
-
- `trim` - Auto-remove uniform borders
|
|
186
|
-
- `extend` - Add padding/borders with custom colors
|
|
187
|
-
- `thumbnail` - Generate thumbnails (64px to 512px)
|
|
188
|
-
|
|
189
|
-
**Color & Tone** (10 commands)
|
|
190
|
-
|
|
191
|
-
- `modulate` - Adjust brightness, saturation, hue
|
|
192
|
-
- `gamma` - Gamma correction for midtones (0.1-3.0)
|
|
193
|
-
- `tint` - Apply color tint overlays (RGB hex)
|
|
194
|
-
- `grayscale` - Convert to black & white
|
|
195
|
-
- `negate` - Create negative/inverted images
|
|
196
|
-
- `normalize` - Auto-enhance contrast and brightness
|
|
197
|
-
- `linear` - Apply linear formula: output = (a \* input) + b
|
|
198
|
-
- `recomb` - Recombine RGB channels using matrix
|
|
199
|
-
- `flatten` - Remove alpha transparency with background color
|
|
200
|
-
- `unflatten` - Add alpha channel (RGB→RGBA)
|
|
201
|
-
|
|
202
|
-
**Effects & Filters** (9 commands)
|
|
203
|
-
|
|
204
|
-
- `blur` - Gaussian blur (0.3-1000 sigma)
|
|
205
|
-
- `sharpen` - Enhance details and edges (flat/jagged modes)
|
|
206
|
-
- `median` - Noise reduction filter (1-50 size)
|
|
207
|
-
- `sepia` - Vintage sepia tone effect
|
|
208
|
-
- `vignette` - Darken edges for artistic focus
|
|
209
|
-
- `pixelate` - Retro pixel art effect (custom pixel size)
|
|
210
|
-
- `threshold` - Binary black/white conversion (0-255)
|
|
211
|
-
- `dilate` - Morphological dilation (expand bright regions)
|
|
212
|
-
- `erode` - Morphological erosion (expand dark regions)
|
|
213
|
-
|
|
214
|
-
**Advanced Operations** (6 commands)
|
|
215
|
-
|
|
216
|
-
- `composite` - Layer images with blend modes (overlay, multiply, screen)
|
|
217
|
-
- `extract` - Extract color channels (red, green, blue, alpha)
|
|
218
|
-
- `border` - Add decorative frames with custom colors
|
|
219
|
-
- `clahe` - Contrast-limited adaptive histogram equalization
|
|
220
|
-
- `convolve` - Apply custom convolution kernels (sharpen, emboss, edge)
|
|
221
|
-
- `boolean` - Perform boolean operations between images (AND, OR, XOR)
|
|
222
|
-
|
|
223
|
-
**Smart/AI Operations** (6 commands)
|
|
224
|
-
|
|
225
|
-
- `smart-crop` - Intelligent content-aware cropping (attention/entropy)
|
|
226
|
-
- `auto-enhance` - Automatic color and contrast enhancement
|
|
227
|
-
- `palette` - Extract dominant color palettes (2-256 colors)
|
|
228
|
-
- `dominant-color` - Quick dominant color extraction
|
|
229
|
-
- `grid` - Combine images into collage layouts
|
|
230
|
-
- `batch` - Process multiple images at once with any operation
|
|
231
|
-
|
|
232
|
-
**Utility** (10 commands)
|
|
233
|
-
|
|
234
|
-
- `compress` - Advanced compression with quality control
|
|
235
|
-
- `convert` - Format conversion (JPG, PNG, WebP, AVIF, TIFF, GIF)
|
|
236
|
-
- `optimize` - Size optimization (up to 70% reduction, lossless/lossy)
|
|
237
|
-
- `info` - Display detailed image metadata
|
|
238
|
-
- `watermark` - Add watermarks with positioning and opacity
|
|
239
|
-
- `stats` - Technical image statistics (channels, depth, color space)
|
|
240
|
-
- `split` - Split image into grid tiles
|
|
241
|
-
- `stack` - Stack images horizontally/vertically
|
|
242
|
-
- `mirror` - Create mirror/kaleidoscope effects
|
|
243
|
-
- `metadata` - View, export, or remove EXIF data
|
|
244
|
-
|
|
245
|
-
**Format Support:**
|
|
246
|
-
|
|
247
|
-
- Input: JPG, PNG, WebP, AVIF, TIFF, GIF, SVG, HEIF
|
|
248
|
-
- Output: JPG, PNG, WebP, AVIF, TIFF, GIF
|
|
249
|
-
- Modern formats: WebP (25-35% smaller), AVIF (50% smaller)
|
|
250
|
-
|
|
251
|
-
**Professional Features:**
|
|
252
|
-
|
|
253
|
-
- Quality control (1-100)
|
|
254
|
-
- Dry-run mode (preview before executing)
|
|
255
|
-
- Verbose logging
|
|
256
|
-
- Built-in help for every command
|
|
257
|
-
- Comprehensive error handling
|
|
258
|
-
- File size reporting
|
|
259
|
-
|
|
260
|
-
### Video Processing (@mediaproc/video)
|
|
261
|
-
|
|
262
|
-
**Install:** `mediaproc add video`
|
|
263
|
-
|
|
264
|
-
**6 Professional Commands Available:**
|
|
265
|
-
|
|
266
|
-
**Format & Quality**
|
|
267
|
-
|
|
268
|
-
- `compress` - CRF-based compression with presets (ultrafast to veryslow)
|
|
269
|
-
- H.264/H.265 codec support
|
|
270
|
-
- Quality control via CRF (0-51)
|
|
271
|
-
- Two-pass encoding option
|
|
272
|
-
- Hardware acceleration support
|
|
273
|
-
- `transcode` - Convert between formats with codec control
|
|
274
|
-
- MP4, WebM, AVI, MKV, MOV support
|
|
275
|
-
- Video: H.264, H.265, VP9, AV1
|
|
276
|
-
- Audio: AAC, MP3, Opus, Vorbis
|
|
277
|
-
- Custom bitrate and quality settings
|
|
278
|
-
|
|
279
|
-
**Editing & Manipulation**
|
|
280
|
-
|
|
281
|
-
- `trim` - Cut videos by time or percentage
|
|
282
|
-
- Start/end time specification (HH:MM:SS)
|
|
283
|
-
- Duration-based trimming
|
|
284
|
-
- Percentage-based cutting
|
|
285
|
-
- Frame-accurate cutting
|
|
286
|
-
- `resize` - Scale videos to target resolution
|
|
287
|
-
- Preset sizes: 4K, 1080p, 720p, 480p, 360p
|
|
288
|
-
- Custom dimensions with aspect ratio preservation
|
|
289
|
-
- Multiple scaling algorithms (fast/quality)
|
|
290
|
-
|
|
291
|
-
**Merging & Extraction**
|
|
292
|
-
|
|
293
|
-
- `merge` - Concatenate multiple videos
|
|
294
|
-
- Fast concat mode (no re-encode)
|
|
295
|
-
- Re-encode mode for different formats
|
|
296
|
-
- Automatic format compatibility detection
|
|
297
|
-
- `extract` - Extract media from videos
|
|
298
|
-
- `extract-audio` - Extract audio tracks (MP3, AAC, WAV, FLAC)
|
|
299
|
-
- `extract-frames` - Export frame sequences (JPG, PNG)
|
|
300
|
-
- `extract-thumbnail` - Generate video thumbnails
|
|
301
|
-
|
|
302
|
-
**Technical Features:**
|
|
303
|
-
|
|
304
|
-
- FFmpeg-powered processing
|
|
305
|
-
- Hardware acceleration (when available)
|
|
306
|
-
- Progress tracking with ETA
|
|
307
|
-
- Dry-run mode for preview
|
|
308
|
-
- Comprehensive metadata display
|
|
309
|
-
- File size reporting
|
|
310
|
-
- Quality presets for common use cases
|
|
311
|
-
|
|
312
|
-
### Audio Processing (@mediaproc/audio)
|
|
313
|
-
|
|
314
|
-
**Install:** Built-in with CLI (or standalone: `npm install -g @mediaproc/audio`)
|
|
315
|
-
|
|
316
|
-
**5 Professional Commands Available:**
|
|
317
|
-
|
|
318
|
-
**Format Conversion**
|
|
319
|
-
|
|
320
|
-
- `convert` - Convert between audio formats
|
|
321
|
-
- Formats: MP3, AAC, WAV, FLAC, OGG, Opus, M4A
|
|
322
|
-
- Quality presets: low, medium, high, lossless
|
|
323
|
-
- Bitrate control (128k, 192k, 256k, 320k)
|
|
324
|
-
- Sample rate adjustment (44.1kHz, 48kHz, 96kHz)
|
|
325
|
-
- Channel control (mono/stereo)
|
|
326
|
-
|
|
327
|
-
**Extraction & Processing**
|
|
328
|
-
|
|
329
|
-
- `extract` - Extract audio from video files
|
|
330
|
-
- Support for all major video formats
|
|
331
|
-
- Multiple output formats
|
|
332
|
-
- Quality and bitrate control
|
|
333
|
-
- Preserves audio metadata
|
|
334
|
-
|
|
335
|
-
**Audio Enhancement**
|
|
336
|
-
|
|
337
|
-
- `normalize` - Audio level normalization
|
|
338
|
-
- EBU R128 loudness standard (loudnorm)
|
|
339
|
-
- Peak normalization method
|
|
340
|
-
- Target LUFS: -16 (broadcast), -23 (streaming), -14 (podcasts)
|
|
341
|
-
- True peak limiting to prevent clipping
|
|
342
|
-
- Consistent volume across files
|
|
343
|
-
|
|
344
|
-
**Editing**
|
|
345
|
-
|
|
346
|
-
- `trim` - Cut audio segments
|
|
347
|
-
- Time-based trimming (HH:MM:SS or seconds)
|
|
348
|
-
- Duration-based cutting
|
|
349
|
-
- Optional fade-in/fade-out effects
|
|
350
|
-
- Fast mode (stream copy, no re-encoding)
|
|
351
|
-
- Frame-accurate cutting
|
|
352
|
-
|
|
353
|
-
**Merging**
|
|
354
|
-
|
|
355
|
-
- `merge` - Concatenate multiple audio files
|
|
356
|
-
- Seamless joining of audio files
|
|
357
|
-
- Optional crossfade between tracks
|
|
358
|
-
- Automatic format normalization
|
|
359
|
-
- Multi-file batch processing
|
|
360
|
-
|
|
361
|
-
**Technical Features:**
|
|
362
|
-
|
|
363
|
-
- FFmpeg/FFprobe powered processing
|
|
364
|
-
- Comprehensive format support
|
|
365
|
-
- Quality presets for common use cases
|
|
366
|
-
- Progress tracking with detailed output
|
|
367
|
-
- Dry-run mode for command preview
|
|
368
|
-
- Metadata preservation
|
|
369
|
-
- File size reporting
|
|
370
|
-
- Built-in help for every command
|
|
371
|
-
|
|
372
|
-
✅ **Architecture** - Plugin system designed and implemented
|
|
373
|
-
✅ **Core CLI** - Command framework with plugin discovery
|
|
374
|
-
✅ **Built-in Plugins** - Image, Video, and Audio plugins ship with CLI
|
|
375
|
-
✅ **Plugin Registry** - Smart plugin management
|
|
376
|
-
✅ **Documentation** - Comprehensive guides and standards
|
|
377
|
-
✅ **Community Guidelines** - Contributing, security, code of conduct
|
|
378
|
-
|
|
379
|
-
### 🚧 In Development
|
|
380
|
-
|
|
381
|
-
🚧 **Testing** - Comprehensive test coverage
|
|
382
|
-
🚧 **Examples** - Real-world usage examples
|
|
383
|
-
|
|
384
|
-
### What's Next
|
|
385
|
-
|
|
386
|
-
📋 **Document Plugin** - PDF processing, OCR (Q2 2026)
|
|
387
|
-
📋 **Advanced Plugins** - 3D, streaming, AI features (Q2-Q3 2026)
|
|
388
|
-
📋 **Plugin Marketplace** - Community plugin directory (Q3 2026)
|
|
389
|
-
|
|
390
|
-
See [Upcoming Features](docs/upcoming-features.md) for detailed roadmap.
|
|
391
|
-
|
|
392
|
-
---
|
|
393
|
-
|
|
394
|
-
## ✨ Features
|
|
395
|
-
|
|
396
|
-
### Core Architecture
|
|
397
|
-
|
|
398
|
-
#### 🎁 **Built-in Plugins** (Out of the Box)
|
|
399
|
-
|
|
400
|
-
MediaProc ships with essential plugins pre-installed, giving you immediate productivity:
|
|
401
|
-
|
|
402
|
-
- **@mediaproc/image** - Professional image processing (49 commands)
|
|
403
|
-
|
|
404
|
-
- Resize, crop, rotate, flip, convert formats
|
|
405
|
-
- Filters: blur, sharpen, tint, grayscale, median
|
|
406
|
-
- Color adjustments: modulate, gamma, normalize
|
|
407
|
-
- Utilities: thumbnail, watermark, optimize, trim, extend
|
|
408
|
-
|
|
409
|
-
- **@mediaproc/video** - Professional video processing (7 commands)
|
|
410
|
-
- Compress: CRF-based compression with quality presets
|
|
411
|
-
- Transcode: Format conversion (MP4, WebM, AVI, MKV)
|
|
412
|
-
- Convert: Simple format conversion with remux support
|
|
413
|
-
- Trim: Time-based cutting and clipping
|
|
414
|
-
- Resize: Scale to 4K, 1080p, 720p, or custom
|
|
415
|
-
- Merge: Concatenate multiple videos
|
|
416
|
-
- Extract: Audio tracks, frame sequences, thumbnails
|
|
417
|
-
|
|
418
|
-
- **@mediaproc/audio** - Professional audio processing (5 commands)
|
|
419
|
-
- Convert: Format conversion (MP3, AAC, WAV, FLAC, OGG, Opus)
|
|
420
|
-
- Extract: Extract audio from video files
|
|
421
|
-
- Normalize: Audio level normalization (EBU R128 standard)
|
|
422
|
-
- Trim: Cut audio segments with fade effects
|
|
423
|
-
- Merge: Concatenate multiple audio files with crossfade
|
|
424
|
-
|
|
425
|
-
#### 🔌 **Add-on Plugins** (Install as Needed)
|
|
426
|
-
|
|
427
|
-
Extend functionality by installing additional plugins from npm:
|
|
428
|
-
|
|
429
|
-
```bash
|
|
430
|
-
# Add more plugins from npm
|
|
431
|
-
mediaproc add animation # GIF, WebP, Lottie optimization
|
|
432
|
-
mediaproc add 3d # glTF, OBJ, FBX processing
|
|
433
|
-
mediaproc add stream # HLS/DASH streaming
|
|
434
|
-
mediaproc add ai # AI-powered enhancements
|
|
435
|
-
```
|
|
436
|
-
|
|
437
|
-
#### 💡 **Why This Architecture?**
|
|
438
|
-
|
|
439
|
-
**Universal CLI Benefits:**
|
|
440
|
-
|
|
441
|
-
- ✅ Get started instantly with built-in plugins
|
|
442
|
-
- ✅ Consistent command syntax across all plugins
|
|
443
|
-
- ✅ Unified plugin management (`add`, `remove`, `list`)
|
|
444
|
-
- ✅ Shared configuration and settings
|
|
445
|
-
- ✅ Better integration between different media types
|
|
446
|
-
- ✅ One tool to learn instead of many
|
|
447
|
-
|
|
448
|
-
**Standalone Plugin Benefits:**
|
|
449
|
-
|
|
450
|
-
- ✅ Each plugin can also run independently
|
|
451
|
-
- ✅ Lightweight installs (only what you need)
|
|
452
|
-
- ✅ Faster startup for single-purpose usage
|
|
453
|
-
- ✅ Easy to distribute and share
|
|
454
|
-
|
|
455
|
-
**Example: Two Ways to Use**
|
|
456
|
-
|
|
457
|
-
```bash
|
|
458
|
-
# Option 1: Use with universal CLI (recommended)
|
|
459
|
-
npm install -g @mediaproc/cli # Includes @mediaproc/image built-in
|
|
460
|
-
mediaproc image resize photo.jpg -w 1920
|
|
461
|
-
|
|
462
|
-
# Option 2: Use plugin standalone (if you only need images)
|
|
463
|
-
npm install -g @mediaproc/image
|
|
464
|
-
mediaproc-image resize photo.jpg -w 1920
|
|
465
|
-
```
|
|
466
|
-
|
|
467
|
-
### Current Features (v0.2.0)
|
|
468
|
-
|
|
469
|
-
#### Core CLI
|
|
470
|
-
|
|
471
|
-
- ✅ Plugin discovery and loading
|
|
472
|
-
- ✅ Built-in plugins (ship with CLI)
|
|
473
|
-
- ✅ Add-on plugins (install from npm)
|
|
474
|
-
- ✅ Smart installation (auto-detects global/local)
|
|
475
|
-
- ✅ Plugin registry with short names
|
|
476
|
-
- ✅ Configuration management
|
|
477
|
-
- ✅ TypeScript with strict mode
|
|
478
|
-
- ✅ Cross-platform support
|
|
479
|
-
|
|
480
|
-
#### Plugin Management
|
|
481
|
-
|
|
482
|
-
- `mediaproc list` - List all plugins (built-in and installed)
|
|
483
|
-
- `mediaproc add <plugin>` - Install add-on plugins from npm
|
|
484
|
-
- `mediaproc remove <plugin>` - Uninstall add-on plugins
|
|
485
|
-
- `mediaproc delete <plugin>` - Delete/uninstall plugins (alias: uninstall)
|
|
486
|
-
- `--global` - Delete globally installed plugin
|
|
487
|
-
- `--local` - Delete locally installed plugin
|
|
488
|
-
- `--yes` - Skip confirmation prompt
|
|
489
|
-
- `--verbose` - Show detailed output
|
|
490
|
-
- `mediaproc update [plugin]` - Update plugin(s) to latest version
|
|
491
|
-
- `--version <version>` - Update to specific version
|
|
492
|
-
- `--global` - Update globally installed plugins
|
|
493
|
-
- `--verbose` - Show detailed output
|
|
494
|
-
- `mediaproc plugins` - Show available plugins
|
|
495
|
-
- `mediaproc init` - Initialize configuration
|
|
496
|
-
- `mediaproc config` - Manage settings
|
|
497
|
-
|
|
498
|
-
#### Universal Commands (Work Without Plugins)
|
|
499
|
-
|
|
500
|
-
- `mediaproc convert <input> <output>` - Auto-detect and convert any media file
|
|
501
|
-
- `mediaproc info <file>` - Show file information for any media type
|
|
502
|
-
- `mediaproc optimize <file>` - Suggest optimization strategy based on file type
|
|
503
|
-
|
|
504
|
-
#### Image Processing (@mediaproc/image) ★ BUILT-IN
|
|
505
|
-
|
|
506
|
-
**40 Professional Commands Ready to Use:**
|
|
507
|
-
|
|
508
|
-
**Transform & Resize** (7 commands)
|
|
509
|
-
|
|
510
|
-
- `resize` - Resize with fit modes (cover, contain, fill, inside, outside)
|
|
511
|
-
- `crop` - Extract rectangular regions with positioning
|
|
512
|
-
- `rotate` - Any angle rotation with background control
|
|
513
|
-
- `flip` - Horizontal/vertical/both mirroring
|
|
514
|
-
- `trim` - Auto-remove uniform borders
|
|
515
|
-
- `extend` - Add padding/borders with custom colors
|
|
516
|
-
- `thumbnail` - Generate thumbnails (64px to 512px)
|
|
517
|
-
|
|
518
|
-
**Color & Tone** (6 commands)
|
|
519
|
-
|
|
520
|
-
- `modulate` - Adjust brightness, saturation, hue
|
|
521
|
-
- `gamma` - Gamma correction for midtones (0.1-3.0)
|
|
522
|
-
- `tint` - Apply color tint overlays (RGB hex)
|
|
523
|
-
- `grayscale` - Convert to black & white
|
|
524
|
-
- `negate` - Create negative/inverted images
|
|
525
|
-
- `normalize` - Auto-enhance contrast and brightness
|
|
526
|
-
|
|
527
|
-
**Effects & Filters** (6 commands)
|
|
528
|
-
|
|
529
|
-
- `blur` - Gaussian blur (0.3-1000 sigma)
|
|
530
|
-
- `sharpen` - Enhance details and edges (flat/jagged modes)
|
|
531
|
-
- `median` - Noise reduction filter (1-50 size)
|
|
532
|
-
- `sepia` - Vintage sepia tone effect
|
|
533
|
-
- `vignette` - Darken edges for artistic focus
|
|
534
|
-
- `pixelate` - Retro pixel art effect (custom pixel size)
|
|
535
|
-
|
|
536
|
-
**Advanced Operations** (6 commands)
|
|
537
|
-
|
|
538
|
-
- `composite` - Layer images with blend modes
|
|
539
|
-
- `extract` - Extract color channels or regions
|
|
540
|
-
- `border` - Add decorative frames
|
|
541
|
-
- `clahe` - Contrast-limited adaptive histogram equalization
|
|
542
|
-
- `convolve` - Apply custom convolution kernels
|
|
543
|
-
- `text` - Add text overlays with styling
|
|
544
|
-
|
|
545
|
-
**Utility & Metadata** (8 commands)
|
|
546
|
-
|
|
547
|
-
- `convert` - Format conversion
|
|
548
|
-
- `optimize` - Smart size optimization
|
|
549
|
-
- `compress` - Advanced compression control
|
|
550
|
-
- `watermark` - Add watermarks with positioning
|
|
551
|
-
- `info` - Display image metadata
|
|
552
|
-
- `metadata` - Manage EXIF/IPTC data
|
|
553
|
-
- `thumbnail` - Generate optimized thumbnails
|
|
554
|
-
- `stats` - Technical image statistics
|
|
555
|
-
|
|
556
|
-
**Format Support:**
|
|
557
|
-
|
|
558
|
-
- Input: JPG, PNG, WebP, AVIF, TIFF, GIF, SVG, HEIF
|
|
559
|
-
- Output: JPG, PNG, WebP, AVIF, TIFF, GIF
|
|
560
|
-
- Modern formats: WebP (25-35% smaller), AVIF (50% smaller)
|
|
561
|
-
|
|
562
|
-
**Professional Features:**
|
|
563
|
-
|
|
564
|
-
- Quality control (1-100)
|
|
565
|
-
- Dry-run mode (preview before executing)
|
|
566
|
-
- Verbose logging
|
|
567
|
-
- Built-in help for every command
|
|
568
|
-
- Comprehensive error handling
|
|
569
|
-
- File size reporting
|
|
570
|
-
|
|
571
|
-
See [plugins/image/README.md](plugins/image/README.md) for complete image plugin documentation.
|
|
572
|
-
|
|
573
|
-
### Planned Features (Add-on Plugins)
|
|
574
|
-
|
|
575
|
-
#### Document Processing (@mediaproc/document) - Q2 2026
|
|
576
|
-
|
|
577
|
-
- PDF compression
|
|
578
|
-
- Page extraction and splitting
|
|
579
|
-
- OCR text extraction
|
|
580
|
-
- PDF merging
|
|
581
|
-
- Format conversion
|
|
582
|
-
- Watermarking
|
|
583
|
-
|
|
584
|
-
#### Advanced Features (Q3-Q4 2026)
|
|
585
|
-
|
|
586
|
-
- Animation optimization (GIF, WebP, Lottie)
|
|
587
|
-
- 3D model optimization
|
|
588
|
-
- Metadata management
|
|
589
|
-
- HLS/DASH streaming
|
|
590
|
-
- AI-assisted processing
|
|
591
|
-
- Pipeline workflows
|
|
592
|
-
|
|
593
|
-
See [docs/upcoming-features.md](docs/upcoming-features.md) for complete feature list.
|
|
594
|
-
|
|
595
|
-
---
|
|
596
|
-
|
|
597
|
-
## 🚀 Quick Start
|
|
598
|
-
|
|
599
|
-
### Prerequisites
|
|
600
|
-
|
|
601
|
-
- **Node.js** >= 18.0.0
|
|
602
|
-
- **pnpm** (recommended) or npm
|
|
603
|
-
- **System dependencies** (installed as needed by plugins):
|
|
604
|
-
- FFmpeg (for video/audio)
|
|
605
|
-
- Sharp/libvips (for images)
|
|
606
|
-
- Ghostscript (for PDFs)
|
|
607
|
-
|
|
608
|
-
### Installation
|
|
609
|
-
|
|
610
|
-
#### From npm (when published)
|
|
611
|
-
|
|
612
|
-
```bash
|
|
613
|
-
# Install the universal CLI (includes built-in plugins)
|
|
614
|
-
npm install -g @mediaproc/cli
|
|
615
|
-
|
|
616
|
-
# Start using immediately - image plugin is built-in!
|
|
617
|
-
mediaproc image resize photo.jpg -w 1920
|
|
618
|
-
mediaproc image convert photo.jpg -f webp
|
|
619
|
-
|
|
620
|
-
# Check version and list plugins
|
|
621
|
-
mediaproc --version
|
|
622
|
-
mediaproc list
|
|
623
|
-
```
|
|
624
|
-
|
|
625
|
-
#### From Source (current)
|
|
626
|
-
|
|
627
|
-
```bash
|
|
628
|
-
# Clone repository
|
|
629
|
-
git clone https://github.com/0xshariq/mediaproc.git
|
|
630
|
-
cd mediaproc
|
|
631
|
-
|
|
632
|
-
# Install dependencies
|
|
633
|
-
pnpm install
|
|
634
|
-
|
|
635
|
-
# Build all packages (including built-in plugins)
|
|
636
|
-
pnpm build:all
|
|
637
|
-
|
|
638
|
-
# Link globally
|
|
639
|
-
cd plugins/image && pnpm link --global
|
|
640
|
-
cd ../.. && pnpm link --global
|
|
641
|
-
|
|
642
|
-
# Verify
|
|
643
|
-
mediaproc --version
|
|
644
|
-
mediaproc list # Should show @mediaproc/image as built-in
|
|
645
|
-
```
|
|
646
|
-
|
|
647
|
-
### Basic Usage
|
|
648
|
-
|
|
649
|
-
```bash
|
|
650
|
-
# Image processing (built-in - works immediately!)
|
|
651
|
-
mediaproc image resize photo.jpg --width 1920 --height 1080
|
|
652
|
-
mediaproc image convert photo.jpg -f webp -q 85
|
|
653
|
-
mediaproc image thumbnail photo.jpg -s 300
|
|
654
|
-
|
|
655
|
-
# Get help anytime
|
|
656
|
-
mediaproc --help
|
|
657
|
-
mediaproc image --help
|
|
658
|
-
mediaproc image resize --help
|
|
659
|
-
```
|
|
660
|
-
|
|
661
|
-
### Adding More Plugins
|
|
662
|
-
|
|
663
|
-
```bash
|
|
664
|
-
# Install additional plugins from npm
|
|
665
|
-
mediaproc add video # Video processing
|
|
666
|
-
mediaproc add audio # Audio processing
|
|
667
|
-
mediaproc add document # PDF processing
|
|
668
|
-
|
|
669
|
-
# Update plugins to latest version
|
|
670
|
-
mediaproc update # Update all plugins
|
|
671
|
-
mediaproc update image # Update specific plugin
|
|
672
|
-
|
|
673
|
-
# View all plugins (built-in + installed)
|
|
674
|
-
mediaproc list
|
|
675
|
-
|
|
676
|
-
# Example output:
|
|
677
|
-
# 📦 Built-in Plugins:
|
|
678
|
-
# ✓ image ★ BUILT-IN
|
|
679
|
-
#
|
|
680
|
-
# 🔌 User-Installed:
|
|
681
|
-
# ✓ video
|
|
682
|
-
# ✓ audio
|
|
683
|
-
```
|
|
684
|
-
|
|
685
|
-
# View installed plugins
|
|
686
|
-
|
|
687
|
-
mediaproc list
|
|
688
|
-
|
|
689
|
-
````
|
|
690
|
-
|
|
691
|
-
---
|
|
692
|
-
|
|
693
|
-
## 📦 Available Plugins
|
|
694
|
-
|
|
695
|
-
### Official Plugins
|
|
696
|
-
|
|
697
|
-
| Plugin | Commands | Status | Description |
|
|
698
|
-
| ---------------------------------- | -------- | -------------- | ---------------------------------------- |
|
|
699
|
-
| **[image](plugins/image)** | 10 | 🚧 In Progress | Resize, convert, optimize, filter images |
|
|
700
|
-
| **[video](plugins/video)** | 6 | 🚧 In Progress | Transcode, compress, trim, merge videos |
|
|
701
|
-
| **[audio](plugins/audio)** | 5 | 🚧 In Progress | Convert, normalize, trim, merge audio |
|
|
702
|
-
| **[document](plugins/document)** | 5 | 📋 Planned | Process PDFs and documents |
|
|
703
|
-
| **[animation](plugins/animation)** | 2 | 📋 Planned | Optimize GIFs and animations |
|
|
704
|
-
| **[3d](plugins/3d)** | 4 | 📋 Planned | Optimize 3D models |
|
|
705
|
-
| **[metadata](plugins/metadata)** | 4 | 📋 Planned | Manage media metadata |
|
|
706
|
-
| **[stream](plugins/stream)** | 3 | 📋 Planned | HLS/DASH packaging |
|
|
707
|
-
| **[ai](plugins/ai)** | 4 | 💡 Concept | AI-powered processing |
|
|
708
|
-
| **[pipeline](plugins/pipeline)** | 2 | 📋 Planned | Workflow automation |
|
|
709
|
-
|
|
710
|
-
**Legend:** ✅ Complete | 🚧 In Progress | 📋 Planned | 💡 Concept
|
|
711
|
-
|
|
712
|
-
### Community Plugins
|
|
713
|
-
|
|
714
|
-
Third-party plugins are welcome! See [Creating Plugins](#-creating-your-own-plugins) below.
|
|
715
|
-
|
|
716
|
-
**Plugin Development Resources:**
|
|
717
|
-
|
|
718
|
-
- 📖 [Plugin Integration Guide](docs/plugin-integration-guide.md) - Complete tutorial
|
|
719
|
-
- 🏗️ [Plugin Template](https://github.com/0xshariq/mediaproc-plugin-template) - Starter template (coming soon)
|
|
720
|
-
- 📚 [Example Plugins](https://github.com/0xshariq/mediaproc-examples) - Real examples (coming soon)
|
|
721
|
-
|
|
722
|
-
_Coming soon: Browse community plugins at https://plugins.mediaproc.dev_
|
|
723
|
-
|
|
724
|
-
---
|
|
725
|
-
|
|
726
|
-
## � Plugin Terminology
|
|
727
|
-
|
|
728
|
-
### Important: No Plugins Are Pre-Installed!
|
|
729
|
-
|
|
730
|
-
MediaProc CLI is lightweight and contains **NO plugin code**. All plugins must be explicitly installed.
|
|
731
|
-
|
|
732
|
-
### Plugin Types
|
|
733
|
-
|
|
734
|
-
1. **Official Plugins** (`@mediaproc/*`) - Maintained by MediaProc team
|
|
735
|
-
- Example: `@mediaproc/image`, `@mediaproc/video`
|
|
736
|
-
- High quality, regularly updated
|
|
737
|
-
- Install: `mediaproc add image`
|
|
738
|
-
|
|
739
|
-
2. **Community Plugins** (`mediaproc-*`) - Community-maintained
|
|
740
|
-
- Example: `mediaproc-custom-filter`
|
|
741
|
-
- Follow community standards
|
|
742
|
-
- Install: `mediaproc add mediaproc-custom-filter`
|
|
743
|
-
|
|
744
|
-
3. **Third-Party Plugins** - Any compatible npm package
|
|
745
|
-
- No naming convention required
|
|
746
|
-
- Must implement MediaProc plugin interface
|
|
747
|
-
- Install: `mediaproc add package-name`
|
|
748
|
-
|
|
749
|
-
### Quick Reference
|
|
750
|
-
|
|
751
|
-
```bash
|
|
752
|
-
# Install CLI (no plugins included)
|
|
753
|
-
npm install -g @mediaproc/cli
|
|
754
|
-
|
|
755
|
-
# Browse available plugins
|
|
756
|
-
mediaproc plugins
|
|
757
|
-
|
|
758
|
-
# Install official plugins
|
|
759
|
-
mediaproc add image # Image processing
|
|
760
|
-
mediaproc add video # Video processing
|
|
761
|
-
|
|
762
|
-
# Check what's installed
|
|
763
|
-
mediaproc list
|
|
764
|
-
|
|
765
|
-
# Use installed plugins
|
|
766
|
-
mediaproc image resize photo.jpg -w 800
|
|
767
|
-
```
|
|
768
|
-
|
|
769
|
-
### Updating Plugins
|
|
770
|
-
|
|
771
|
-
Keep plugins up-to-date for latest features and bug fixes:
|
|
772
|
-
|
|
773
|
-
```bash
|
|
774
|
-
# Update all installed plugins
|
|
775
|
-
mediaproc update
|
|
776
|
-
|
|
777
|
-
# Update specific plugin
|
|
778
|
-
mediaproc update image
|
|
779
|
-
mediaproc update video
|
|
780
|
-
|
|
781
|
-
# Update with scope control
|
|
782
|
-
mediaproc update --global # Global plugins only
|
|
783
|
-
mediaproc update image --local # Local plugin only
|
|
784
|
-
|
|
785
|
-
# Verbose output
|
|
786
|
-
mediaproc update --verbose
|
|
787
|
-
```
|
|
788
|
-
|
|
789
|
-
See full documentation for version control and advanced options.
|
|
790
|
-
- Example: `mediaproc-custom-filter`
|
|
791
|
-
- Full name required: `mediaproc update mediaproc-custom-filter`
|
|
792
|
-
|
|
793
|
-
3. **Third-Party Plugins** - ◇ THIRD-PARTY
|
|
794
|
-
- Any other npm package
|
|
795
|
-
- Full package name: `mediaproc update @company/plugin-name`
|
|
796
|
-
|
|
797
|
-
**What the update command does:**
|
|
798
|
-
|
|
799
|
-
1. **Detects Plugin Type**: Identifies official, community, or third-party plugins
|
|
800
|
-
2. **Detects Installation Scope**: Automatically determines if plugins are installed globally or locally
|
|
801
|
-
3. **Fetches Latest Versions**: Checks npm registry for the newest versions (or specific version)
|
|
802
|
-
4. **Updates Dependencies**: Uses the appropriate package manager (npm, pnpm, yarn, bun, deno)
|
|
803
|
-
5. **Shows Changes**: Displays version changes (old → new)
|
|
804
|
-
6. **Auto-Reload**: Plugins are automatically available after update
|
|
805
|
-
|
|
806
|
-
**Examples:**
|
|
807
|
-
|
|
808
|
-
```bash
|
|
809
|
-
# Update all plugins (recommended)
|
|
810
|
-
$ mediaproc update
|
|
811
|
-
✓ Updating all MediaProc plugins...
|
|
812
|
-
✓ All MediaProc plugins updated successfully
|
|
813
|
-
|
|
814
|
-
# Update official plugin to latest
|
|
815
|
-
$ mediaproc update image
|
|
816
|
-
✓ Detecting plugin type for image...
|
|
817
|
-
✓ image ★ OFFICIAL updated successfully (1.2.0 → 1.2.2)
|
|
818
|
-
|
|
819
|
-
# Update to specific version
|
|
820
|
-
$ mediaproc update image --version 1.2.1
|
|
821
|
-
✓ image ★ OFFICIAL updated successfully (1.2.0 → 1.2.1)
|
|
822
|
-
|
|
823
|
-
# Update community plugin
|
|
824
|
-
$ mediaproc update mediaproc-custom-filter
|
|
825
|
-
✓ mediaproc-custom-filter ◆ COMMUNITY updated successfully
|
|
826
|
-
|
|
827
|
-
# Update with verbose output
|
|
828
|
-
$ mediaproc update image --verbose
|
|
829
|
-
ℹ Package manager: pnpm
|
|
830
|
-
ℹ Plugin type: ★ OFFICIAL
|
|
831
|
-
ℹ Package name: @mediaproc/image
|
|
832
|
-
ℹ Current version: 1.2.0
|
|
833
|
-
ℹ Running: pnpm add @mediaproc/image
|
|
834
|
-
✓ image ★ OFFICIAL updated successfully (1.2.0 → 1.2.2)
|
|
835
|
-
```
|
|
836
|
-
|
|
837
|
-
**📘 Full Guide:** See [Plugin Terminology Guide](docs/plugin-terminology.md) for detailed explanations.
|
|
838
|
-
|
|
839
|
-
---
|
|
840
|
-
|
|
841
|
-
### Deleting Plugins
|
|
842
|
-
|
|
843
|
-
Remove plugins you no longer need to free up disk space:
|
|
844
|
-
|
|
845
|
-
```bash
|
|
846
|
-
# Delete a plugin (auto-detects installation scope)
|
|
847
|
-
mediaproc delete image
|
|
848
|
-
mediaproc delete video
|
|
849
|
-
|
|
850
|
-
# Delete specific scope
|
|
851
|
-
mediaproc delete image --global # Delete globally installed
|
|
852
|
-
mediaproc delete image --local # Delete locally installed
|
|
853
|
-
|
|
854
|
-
# Skip confirmation prompt
|
|
855
|
-
mediaproc delete image --yes # No confirmation
|
|
856
|
-
|
|
857
|
-
# Verbose output
|
|
858
|
-
mediaproc delete image --verbose # Show detailed information
|
|
859
|
-
```
|
|
860
|
-
|
|
861
|
-
**Plugin Type Detection:**
|
|
862
|
-
|
|
863
|
-
The delete command automatically detects and handles three types of plugins:
|
|
864
|
-
|
|
865
|
-
1. **Official Plugins** (`@mediaproc/*`) - ★ OFFICIAL
|
|
866
|
-
```bash
|
|
867
|
-
mediaproc delete image # Short name
|
|
868
|
-
mediaproc delete @mediaproc/image # Full name
|
|
869
|
-
```
|
|
870
|
-
|
|
871
|
-
2. **Community Plugins** (`mediaproc-*`) - ◆ COMMUNITY
|
|
872
|
-
```bash
|
|
873
|
-
mediaproc delete mediaproc-custom-filter # Full name required
|
|
874
|
-
```
|
|
875
|
-
|
|
876
|
-
3. **Third-Party Plugins** - ◇ THIRD-PARTY
|
|
877
|
-
```bash
|
|
878
|
-
mediaproc delete @company/plugin-name # Full package name
|
|
879
|
-
```
|
|
880
|
-
|
|
881
|
-
**What the delete command does:**
|
|
882
|
-
|
|
883
|
-
1. **Detects Plugin Type**: Identifies official, community, or third-party plugins
|
|
884
|
-
2. **Detects Installation Scope**: Automatically determines if plugin is installed globally or locally
|
|
885
|
-
3. **Confirms Deletion**: Shows confirmation prompt (skip with `--yes`)
|
|
886
|
-
4. **Uninstalls Package**: Uses the appropriate package manager (npm, pnpm, yarn, bun)
|
|
887
|
-
5. **Shows Status**: Displays deletion status with plugin type badge
|
|
888
|
-
6. **Frees Memory**: Removes all plugin files from disk
|
|
889
|
-
|
|
890
|
-
**Examples:**
|
|
891
|
-
|
|
892
|
-
```bash
|
|
893
|
-
# Delete a plugin
|
|
894
|
-
mediaproc delete image
|
|
895
|
-
mediaproc delete video --global
|
|
896
|
-
|
|
897
|
-
# Skip confirmation
|
|
898
|
-
mediaproc delete image --yes
|
|
899
|
-
|
|
900
|
-
# Alias: uninstall
|
|
901
|
-
mediaproc uninstall image
|
|
902
|
-
```
|
|
903
|
-
|
|
904
|
-
**📘 Full Guide:** See [Plugin Terminology Guide](docs/plugin-terminology.md) for detailed explanations.
|
|
905
|
-
|
|
906
|
-
---
|
|
907
|
-
|
|
908
|
-
## �📚 Documentation
|
|
909
|
-
|
|
910
|
-
Comprehensive documentation is available in the [docs/](docs/) folder:
|
|
911
|
-
|
|
912
|
-
### Core Documentation
|
|
913
|
-
|
|
914
|
-
- **[Plugin Terminology](docs/plugin-terminology.md)** - **START HERE!** Clear definitions and common misconceptions
|
|
915
|
-
|
|
916
|
-
- Official vs Community vs Third-Party plugins
|
|
917
|
-
- No plugins are pre-installed (explained)
|
|
918
|
-
- Installation workflow and plugin states
|
|
919
|
-
- Best practices and FAQ
|
|
920
|
-
|
|
921
|
-
- **[Plugin Architecture](docs/plugin-architecture.md)** - How the plugin system works
|
|
922
|
-
|
|
923
|
-
- On-demand loading architecture
|
|
924
|
-
- Plugin discovery and lifecycle
|
|
925
|
-
- Why no auto-loading
|
|
926
|
-
- Technical implementation
|
|
927
|
-
|
|
928
|
-
- **[Plugin System](docs/plugin-system.md)** - Complete guide to the plugin architecture
|
|
929
|
-
|
|
930
|
-
- How plugins work
|
|
931
|
-
- Plugin discovery and loading
|
|
932
|
-
- Creating plugins
|
|
933
|
-
- **Third-party plugin standards**
|
|
934
|
-
- Plugin submission process
|
|
935
|
-
- Quality standards
|
|
936
|
-
- Testing and publishing
|
|
937
|
-
|
|
938
|
-
- **[Configuration](docs/configuration.md)** - Configure MediaProc for your workflow
|
|
939
|
-
|
|
940
|
-
- Configuration file format
|
|
941
|
-
- Global and project-level settings
|
|
942
|
-
- Plugin-specific options
|
|
943
|
-
- Environment variables
|
|
944
|
-
- Pipeline configuration
|
|
945
|
-
|
|
946
|
-
- **[Upcoming Features](docs/upcoming-features.md)** - Roadmap and planned features
|
|
947
|
-
- Phase 1: Core plugins (Q1-Q2 2026)
|
|
948
|
-
- Phase 2: Advanced plugins (Q3 2026)
|
|
949
|
-
- Phase 3: AI & future-proof (Q4 2026)
|
|
950
|
-
- Long-term vision (2027+)
|
|
951
|
-
|
|
952
|
-
### Plugin Documentation
|
|
953
|
-
|
|
954
|
-
- **[Image Plugin Documentation](docs/image-plugin-documentation.md)** - Complete reference for the Image Plugin
|
|
955
|
-
- All 40 commands documented
|
|
956
|
-
- Usage examples and workflows
|
|
957
|
-
- Best practices and tips
|
|
958
|
-
- Social media presets
|
|
959
|
-
- Real-world use cases
|
|
960
|
-
- Troubleshooting guide
|
|
961
|
-
|
|
962
|
-
### Community Guides
|
|
963
|
-
|
|
964
|
-
- **[Contributing](CONTRIBUTING.md)** - How to contribute to MediaProc
|
|
965
|
-
|
|
966
|
-
- Reporting bugs
|
|
967
|
-
- Suggesting features
|
|
968
|
-
- Pull request guidelines
|
|
969
|
-
- Development setup
|
|
970
|
-
- Plugin development
|
|
971
|
-
|
|
972
|
-
- **[Security](SECURITY.md)** - Security policy and vulnerability reporting
|
|
973
|
-
|
|
974
|
-
- Supported versions
|
|
975
|
-
- Reporting vulnerabilities
|
|
976
|
-
- Security best practices
|
|
977
|
-
- Disclosure policy
|
|
978
|
-
|
|
979
|
-
- **[Code of Conduct](CODE_OF_CONDUCT.md)** - Community guidelines
|
|
980
|
-
|
|
981
|
-
- Our pledge
|
|
982
|
-
- Standards and expectations
|
|
983
|
-
- Enforcement
|
|
984
|
-
- Reporting process
|
|
985
|
-
|
|
986
|
-
- **[Changelog](CHANGELOG.md)** - Release history and changes
|
|
987
|
-
- **[License](LICENSE)** - MIT License
|
|
988
|
-
|
|
989
|
-
### External Resources (Coming Soon)
|
|
990
|
-
|
|
991
|
-
- 🌐 Website: https://mediaproc.dev
|
|
992
|
-
- 📖 Full Docs: https://docs.mediaproc.dev
|
|
993
|
-
- 🎓 Tutorials: https://tutorials.mediaproc.dev
|
|
994
|
-
- 📦 Plugin Marketplace: https://plugins.mediaproc.dev
|
|
995
|
-
- 💻 GitHub: https://github.com/0xshariq/mediaproc
|
|
996
|
-
|
|
997
|
-
---
|
|
998
|
-
|
|
999
|
-
## 💡 Examples
|
|
1000
|
-
|
|
1001
|
-
### Image Processing
|
|
1002
|
-
|
|
1003
|
-
```bash
|
|
1004
|
-
# Resize image
|
|
1005
|
-
mediaproc image resize photo.jpg --width 1920 --height 1080 --fit cover
|
|
1006
|
-
|
|
1007
|
-
# Convert format
|
|
1008
|
-
mediaproc image convert photo.jpg --format webp --quality 85
|
|
1009
|
-
|
|
1010
|
-
# Apply filter
|
|
1011
|
-
mediaproc image grayscale photo.jpg --output bw-photo.jpg
|
|
1012
|
-
|
|
1013
|
-
# Watermark
|
|
1014
|
-
mediaproc image watermark photo.jpg --text "© 2025" --position bottom-right
|
|
1015
|
-
|
|
1016
|
-
# Batch processing
|
|
1017
|
-
for img in photos/*.jpg; do
|
|
1018
|
-
mediaproc image convert "$img" --format webp --quality 85
|
|
1019
|
-
done
|
|
1020
|
-
````
|
|
1021
|
-
|
|
1022
|
-
### Video Processing
|
|
1023
|
-
|
|
1024
|
-
```bash
|
|
1025
|
-
# Compress video
|
|
1026
|
-
mediaproc video compress large-video.mp4 --quality 80 --codec h264
|
|
1027
|
-
|
|
1028
|
-
# Transcode format
|
|
1029
|
-
mediaproc video transcode input.avi --format mp4
|
|
1030
|
-
|
|
1031
|
-
# Extract frames
|
|
1032
|
-
mediaproc video extract video.mp4 --fps 1 --format png
|
|
1033
|
-
|
|
1034
|
-
# Trim video
|
|
1035
|
-
mediaproc video trim video.mp4 --start 00:01:30 --end 00:02:45
|
|
1036
|
-
|
|
1037
|
-
# Merge videos
|
|
1038
|
-
mediaproc video merge video1.mp4 video2.mp4 video3.mp4 --output combined.mp4
|
|
1039
|
-
```
|
|
1040
|
-
|
|
1041
|
-
### Audio Processing
|
|
1042
|
-
|
|
1043
|
-
```bash
|
|
1044
|
-
# Convert format
|
|
1045
|
-
mediaproc audio convert song.wav --format mp3 --bitrate 320k
|
|
1046
|
-
|
|
1047
|
-
# Normalize volume
|
|
1048
|
-
mediaproc audio normalize podcast.mp3 --target -16
|
|
1049
|
-
|
|
1050
|
-
# Extract audio from video
|
|
1051
|
-
mediaproc audio extract video.mp4 --format flac
|
|
1052
|
-
|
|
1053
|
-
# Trim audio
|
|
1054
|
-
mediaproc audio trim song.mp3 --start 00:30 --end 03:45
|
|
1055
|
-
```
|
|
1056
|
-
|
|
1057
|
-
### Pipeline Workflows
|
|
1058
|
-
|
|
1059
|
-
```yaml
|
|
1060
|
-
# workflow.yaml
|
|
1061
|
-
name: "Optimize Images for Web"
|
|
1062
|
-
description: "Batch image optimization pipeline"
|
|
1063
|
-
|
|
1064
|
-
steps:
|
|
1065
|
-
- plugin: image
|
|
1066
|
-
command: resize
|
|
1067
|
-
options:
|
|
1068
|
-
width: 1920
|
|
1069
|
-
height: 1080
|
|
1070
|
-
fit: contain
|
|
1071
|
-
|
|
1072
|
-
- plugin: image
|
|
1073
|
-
command: convert
|
|
1074
|
-
options:
|
|
1075
|
-
format: webp
|
|
1076
|
-
quality: 85
|
|
1077
|
-
|
|
1078
|
-
- plugin: image
|
|
1079
|
-
command: optimize
|
|
1080
|
-
options:
|
|
1081
|
-
level: 9
|
|
1082
|
-
```
|
|
1083
|
-
|
|
1084
|
-
```bash
|
|
1085
|
-
# Run pipeline
|
|
1086
|
-
mediaproc run workflow.yaml --input images/ --output optimized/
|
|
1087
|
-
```
|
|
1088
|
-
|
|
1089
|
-
_Note: Image processing commands are **fully implemented and ready to use**! Video, audio, and other commands are planned for Q1-Q2 2026. See [Current Status](#-current-status) for details._
|
|
1090
|
-
|
|
1091
|
-
---
|
|
1092
|
-
|
|
1093
|
-
## 🔧 Development
|
|
1094
|
-
|
|
1095
|
-
### Setup Development Environment
|
|
1096
|
-
|
|
1097
|
-
```bash
|
|
1098
|
-
# Clone repository
|
|
1099
|
-
git clone https://github.com/0xshariq/mediaproc.git
|
|
1100
|
-
cd mediaproc
|
|
1101
|
-
|
|
1102
|
-
# Install dependencies
|
|
1103
|
-
pnpm install
|
|
1104
|
-
|
|
1105
|
-
# Build all packages
|
|
1106
|
-
pnpm build
|
|
1107
|
-
|
|
1108
|
-
# Link CLI globally
|
|
1109
|
-
pnpm link --global
|
|
1110
|
-
|
|
1111
|
-
# Run in dev mode (watch mode)
|
|
1112
|
-
pnpm dev
|
|
1113
|
-
```
|
|
1114
|
-
|
|
1115
|
-
### Project Structure
|
|
1116
|
-
|
|
1117
|
-
```
|
|
1118
|
-
mediaproc/
|
|
1119
|
-
├── src/ # Core CLI source code
|
|
1120
|
-
│ ├── cli.ts # Main entry point
|
|
1121
|
-
│ ├── plugin-manager.ts # Plugin discovery & loading
|
|
1122
|
-
│ ├── plugin-registry.ts # Plugin name mapping
|
|
1123
|
-
│ ├── types.ts # TypeScript types
|
|
1124
|
-
│ └── commands/ # Core commands
|
|
1125
|
-
│
|
|
1126
|
-
├── plugins/ # Plugin packages
|
|
1127
|
-
│ ├── image/ # Image processing plugin
|
|
1128
|
-
│ ├── video/ # Video processing plugin
|
|
1129
|
-
│ ├── audio/ # Audio processing plugin
|
|
1130
|
-
│ └── .../ # More plugins
|
|
1131
|
-
│
|
|
1132
|
-
├── docs/ # Documentation
|
|
1133
|
-
├── bin/ # Executable files
|
|
1134
|
-
├── CONTRIBUTING.md # Contribution guidelines
|
|
1135
|
-
├── SECURITY.md # Security policy
|
|
1136
|
-
├── CODE_OF_CONDUCT.md # Community guidelines
|
|
1137
|
-
├── CHANGELOG.md # Release history
|
|
1138
|
-
└── package.json # Root package config
|
|
1139
|
-
```
|
|
1140
|
-
|
|
1141
|
-
### Building
|
|
1142
|
-
|
|
1143
|
-
```bash
|
|
1144
|
-
# Build all packages
|
|
1145
|
-
pnpm build
|
|
1146
|
-
|
|
1147
|
-
# Build specific plugin
|
|
1148
|
-
pnpm --filter @mediaproc/image build
|
|
1149
|
-
|
|
1150
|
-
# Clean build artifacts
|
|
1151
|
-
pnpm clean
|
|
1152
|
-
|
|
1153
|
-
# Clean and rebuild
|
|
1154
|
-
pnpm clean && pnpm build
|
|
1155
|
-
```
|
|
1156
|
-
|
|
1157
|
-
### Testing
|
|
1158
|
-
|
|
1159
|
-
```bash
|
|
1160
|
-
# Run all tests (when implemented)
|
|
1161
|
-
pnpm test
|
|
1162
|
-
|
|
1163
|
-
# Test specific plugin
|
|
1164
|
-
pnpm --filter @mediaproc/image test
|
|
1165
|
-
|
|
1166
|
-
# Watch mode
|
|
1167
|
-
pnpm test --watch
|
|
1168
|
-
|
|
1169
|
-
# Coverage
|
|
1170
|
-
pnpm test --coverage
|
|
1171
|
-
```
|
|
1172
|
-
|
|
1173
|
-
---
|
|
1174
|
-
|
|
1175
|
-
## 🎨 Creating Your Own Plugins
|
|
1176
|
-
|
|
1177
|
-
MediaProc welcomes third-party plugins! Anyone can create and publish plugins.
|
|
1178
|
-
|
|
1179
|
-
### Quick Start
|
|
1180
|
-
|
|
1181
|
-
```bash
|
|
1182
|
-
# Create plugin directory
|
|
1183
|
-
mkdir mediaproc-plugin-myprocessor
|
|
1184
|
-
cd mediaproc-plugin-myprocessor
|
|
1185
|
-
|
|
1186
|
-
# Initialize
|
|
1187
|
-
npm init -y
|
|
1188
|
-
|
|
1189
|
-
# Install dependencies
|
|
1190
|
-
npm install --save-peer @mediaproc/cli
|
|
1191
|
-
npm install --save-dev typescript @types/node
|
|
1192
|
-
npm install chalk commander ora
|
|
1193
|
-
```
|
|
1194
|
-
|
|
1195
|
-
### Plugin Structure
|
|
1196
|
-
|
|
1197
|
-
```typescript
|
|
1198
|
-
// src/index.ts
|
|
1199
|
-
import { Command } from "commander";
|
|
1200
|
-
|
|
1201
|
-
export const name = "myprocessor";
|
|
1202
|
-
export const version = "1.0.0";
|
|
1203
|
-
export const description = "My custom processor";
|
|
1204
|
-
|
|
1205
|
-
export function register(program: Command): void {
|
|
1206
|
-
const cmd = program.command(name).description(description);
|
|
1207
|
-
|
|
1208
|
-
cmd
|
|
1209
|
-
.command("process <input>")
|
|
1210
|
-
.description("Process a file")
|
|
1211
|
-
.option("-o, --output <path>", "Output path")
|
|
1212
|
-
.action(async (input, options) => {
|
|
1213
|
-
// Your processing logic
|
|
1214
|
-
console.log("Processing:", input);
|
|
1215
|
-
});
|
|
1216
|
-
}
|
|
1217
|
-
```
|
|
1218
|
-
|
|
1219
|
-
### Publishing
|
|
1220
|
-
|
|
1221
|
-
```bash
|
|
1222
|
-
# Build
|
|
1223
|
-
npm run build
|
|
1224
|
-
|
|
1225
|
-
# Test locally
|
|
1226
|
-
npm link
|
|
1227
|
-
mediaproc myprocessor process test.jpg
|
|
1228
|
-
|
|
1229
|
-
# Publish
|
|
1230
|
-
npm publish
|
|
1231
|
-
```
|
|
1232
|
-
|
|
1233
|
-
### Getting Listed
|
|
1234
|
-
|
|
1235
|
-
Submit your plugin to be featured in the plugin directory:
|
|
1236
|
-
|
|
1237
|
-
1. Publish to npm
|
|
1238
|
-
2. Open an issue with [Plugin Submission] tag
|
|
1239
|
-
3. We'll review and list it!
|
|
1240
|
-
|
|
1241
|
-
**Full Guide:** See [docs/plugin-system.md](docs/plugin-system.md) for complete plugin development guide, including:
|
|
1242
|
-
|
|
1243
|
-
- Naming conventions
|
|
1244
|
-
- Required exports and structure
|
|
1245
|
-
- Quality standards
|
|
1246
|
-
- Submission process
|
|
1247
|
-
- Testing and best practices
|
|
1248
|
-
|
|
1249
|
-
---
|
|
1250
|
-
|
|
1251
|
-
## 🗺️ Roadmap
|
|
1252
|
-
|
|
1253
|
-
### Q1 2026 - Core Plugins
|
|
1254
|
-
|
|
1255
|
-
- ✅ Complete image plugin implementation
|
|
1256
|
-
- ✅ Complete video plugin implementation
|
|
1257
|
-
- ✅ Complete audio plugin implementation
|
|
1258
|
-
- ✅ Performance optimization
|
|
1259
|
-
- ✅ Comprehensive testing
|
|
1260
|
-
- ✅ Beta release
|
|
1261
|
-
|
|
1262
|
-
### Q2 2026 - Advanced Features
|
|
1263
|
-
|
|
1264
|
-
- ✅ Document plugin (PDF processing)
|
|
1265
|
-
- ✅ Animation plugin (GIF optimization)
|
|
1266
|
-
- ✅ Metadata plugin
|
|
1267
|
-
- ✅ Pipeline workflows
|
|
1268
|
-
- ✅ Plugin marketplace launch
|
|
1269
|
-
|
|
1270
|
-
### Q3 2026 - Specialized Plugins
|
|
1271
|
-
|
|
1272
|
-
- ✅ 3D model optimization
|
|
1273
|
-
- ✅ Streaming (HLS/DASH)
|
|
1274
|
-
- ✅ GUI wrapper (Electron)
|
|
1275
|
-
- ✅ VS Code extension
|
|
1276
|
-
|
|
1277
|
-
### Q4 2026 - AI & Future-Proof
|
|
1278
|
-
|
|
1279
|
-
- ✅ AI-assisted features
|
|
1280
|
-
- ✅ Background removal
|
|
1281
|
-
- ✅ Auto-captioning
|
|
1282
|
-
- ✅ v1.0 stable release
|
|
1283
|
-
|
|
1284
|
-
### 2027+ - Long-Term Vision
|
|
1285
|
-
|
|
1286
|
-
- Cloud integration (S3, CDN)
|
|
1287
|
-
- Serverless function support
|
|
1288
|
-
- Enterprise features
|
|
1289
|
-
- Mobile SDK
|
|
1290
|
-
- WebAssembly support
|
|
1291
|
-
|
|
1292
|
-
**Full Roadmap:** See [docs/upcoming-features.md](docs/upcoming-features.md) for detailed feature plans.
|
|
1293
|
-
|
|
1294
|
-
---
|
|
1295
|
-
|
|
1296
|
-
## 🤝 Contributing
|
|
1297
|
-
|
|
1298
|
-
We welcome contributions of all kinds! MediaProc is in active development and there are many ways to help:
|
|
1299
|
-
|
|
1300
|
-
### Ways to Contribute
|
|
1301
|
-
|
|
1302
|
-
- 🐛 **Report Bugs** - [Open an issue](https://github.com/0xshariq/mediaproc/issues/new?template=bug_report.md)
|
|
1303
|
-
- 💡 **Suggest Features** - [Start a discussion](https://github.com/0xshariq/mediaproc/discussions/new?category=ideas)
|
|
1304
|
-
- 📝 **Improve Docs** - Fix typos, add examples, clarify explanations
|
|
1305
|
-
- 🔧 **Write Code** - Implement features, fix bugs, optimize performance
|
|
1306
|
-
- 🧪 **Write Tests** - Improve test coverage
|
|
1307
|
-
- 🎨 **Create Plugins** - Build community plugins
|
|
1308
|
-
- 💬 **Help Others** - Answer questions in discussions
|
|
1309
|
-
- 🌟 **Spread the Word** - Star the repo, share on social media
|
|
1310
|
-
|
|
1311
|
-
### Getting Started
|
|
1312
|
-
|
|
1313
|
-
1. Read the [Contributing Guide](CONTRIBUTING.md)
|
|
1314
|
-
2. Check the [Code of Conduct](CODE_OF_CONDUCT.md)
|
|
1315
|
-
3. Look for [good first issues](https://github.com/0xshariq/mediaproc/labels/good%20first%20issue)
|
|
1316
|
-
4. Join discussions and ask questions
|
|
1317
|
-
5. Submit your first PR!
|
|
1318
|
-
|
|
1319
|
-
### Development Workflow
|
|
1320
|
-
|
|
1321
|
-
```bash
|
|
1322
|
-
# Fork and clone
|
|
1323
|
-
git clone https://github.com/YOUR_USERNAME/mediaproc.git
|
|
1324
|
-
|
|
1325
|
-
# Create branch
|
|
1326
|
-
git checkout -b feature/my-feature
|
|
1327
|
-
|
|
1328
|
-
# Make changes
|
|
1329
|
-
# ... edit files ...
|
|
1330
|
-
|
|
1331
|
-
# Build and test
|
|
1332
|
-
pnpm build
|
|
1333
|
-
pnpm test
|
|
1334
|
-
|
|
1335
|
-
# Commit
|
|
1336
|
-
git commit -m "feat(image): add AVIF support"
|
|
1337
|
-
|
|
1338
|
-
# Push and create PR
|
|
1339
|
-
git push origin feature/my-feature
|
|
1340
|
-
```
|
|
1341
|
-
|
|
1342
|
-
**Full Guide:** See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed contribution guidelines.
|
|
1343
|
-
|
|
1344
|
-
---
|
|
1345
|
-
|
|
1346
|
-
## 👥 Community
|
|
1347
|
-
|
|
1348
|
-
### Get Help & Connect
|
|
1349
|
-
|
|
1350
|
-
- **💬 GitHub Discussions** - Ask questions, share ideas
|
|
1351
|
-
- **🐛 GitHub Issues** - Report bugs, request features
|
|
1352
|
-
- **📧 Email** - support@mediaproc.dev (coming soon)
|
|
1353
|
-
- **🐦 Twitter** - @mediaproc (coming soon)
|
|
1354
|
-
- **💬 Discord** - Join our community (coming soon)
|
|
1355
|
-
|
|
1356
|
-
### Recognition
|
|
1357
|
-
|
|
1358
|
-
Contributors are recognized in:
|
|
1359
|
-
|
|
1360
|
-
- [CHANGELOG.md](CHANGELOG.md) - Release contributions
|
|
1361
|
-
- [GitHub Contributors](https://github.com/0xshariq/mediaproc/graphs/contributors) - Code contributions
|
|
1362
|
-
- Social media shoutouts
|
|
1363
|
-
- Plugin spotlights
|
|
1364
|
-
|
|
1365
|
-
---
|
|
1366
|
-
|
|
1367
|
-
## 📄 License
|
|
1368
|
-
|
|
1369
|
-
MediaProc is [MIT licensed](LICENSE).
|
|
1370
|
-
|
|
1371
|
-
```
|
|
1372
|
-
MIT License
|
|
1373
|
-
|
|
1374
|
-
Copyright (c) 2025 0xshariq and MediaProc contributors
|
|
1375
|
-
|
|
1376
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
1377
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
1378
|
-
in the Software without restriction...
|
|
1379
|
-
```
|
|
1380
|
-
|
|
1381
|
-
See [LICENSE](LICENSE) for full license text.
|
|
1382
|
-
|
|
1383
|
-
---
|
|
1384
|
-
|
|
1385
|
-
## 🙏 Acknowledgments
|
|
1386
|
-
|
|
1387
|
-
MediaProc is built on top of amazing open-source projects:
|
|
1388
|
-
|
|
1389
|
-
### Core Technologies
|
|
1390
|
-
|
|
1391
|
-
- **[Sharp](https://sharp.pixelplumbing.com/)** - High-performance image processing (libvips)
|
|
1392
|
-
- **[FFmpeg](https://ffmpeg.org/)** - Complete multimedia framework
|
|
1393
|
-
- **[Commander.js](https://github.com/tj/commander.js)** - Node.js CLI framework
|
|
1394
|
-
- **[Chalk](https://github.com/chalk/chalk)** - Terminal string styling
|
|
1395
|
-
- **[Ora](https://github.com/sindresorhus/ora)** - Elegant terminal spinners
|
|
1396
|
-
- **[Execa](https://github.com/sindresorhus/execa)** - Better child_process
|
|
1397
|
-
|
|
1398
|
-
### Inspiration
|
|
1399
|
-
|
|
1400
|
-
- **FFmpeg** - The gold standard for media processing
|
|
1401
|
-
- **Sharp** - Blazing fast image processing
|
|
1402
|
-
- **ImageMagick** - Comprehensive image manipulation
|
|
1403
|
-
- **Homebrew** - Plugin-like package management
|
|
1404
|
-
- **VS Code** - Extension architecture
|
|
1405
|
-
|
|
1406
|
-
---
|
|
1407
|
-
|
|
1408
|
-
## 🌟 Star History
|
|
1409
|
-
|
|
1410
|
-
If you find MediaProc useful, please consider giving it a star ⭐️
|
|
1411
|
-
|
|
1412
|
-
It helps us grow and shows appreciation for the work!
|
|
1413
|
-
|
|
1414
|
-
---
|
|
1415
|
-
|
|
1416
|
-
## 📞 Contact
|
|
1417
|
-
|
|
1418
|
-
- **Author**: [@0xshariq](https://github.com/0xshariq)
|
|
1419
|
-
- **Email**: support@mediaproc.dev (coming soon)
|
|
1420
|
-
- **Website**: https://mediaproc.dev (coming soon)
|
|
1421
|
-
- **Issues**: [GitHub Issues](https://github.com/0xshariq/mediaproc/issues)
|
|
1422
|
-
- **Discussions**: [GitHub Discussions](https://github.com/0xshariq/mediaproc/discussions)
|
|
1423
|
-
|
|
1424
|
-
---
|
|
1425
|
-
|
|
1426
|
-
## ⚠️ Development Notice
|
|
1427
|
-
|
|
1428
|
-
**MediaProc is under active development.**
|
|
1429
|
-
|
|
1430
|
-
- API and commands may change before v1.0
|
|
1431
|
-
- Not recommended for production use yet
|
|
1432
|
-
- Feedback and contributions highly appreciated!
|
|
1433
|
-
- Expected stable release: Q4 2026
|
|
1434
|
-
|
|
1435
|
-
---
|
|
1436
|
-
|
|
1437
|
-
<div align="center">
|
|
1438
|
-
|
|
1439
|
-
**Built with ❤️ by [@0xshariq](https://github.com/0xshariq) and [contributors](https://github.com/0xshariq/mediaproc/graphs/contributors)**
|
|
1440
|
-
|
|
1441
|
-
[⬆ Back to Top](#mediaproc)
|
|
1442
|
-
|
|
1443
|
-
</div>
|
|
1444
|
-
|
|
1445
|
-
---
|
|
1446
|
-
|
|
1447
|
-
## 📖 Plugin Development
|
|
1448
|
-
|
|
1449
|
-
### Creating Third-Party Plugins
|
|
1450
|
-
|
|
1451
|
-
Want to extend MediaProc with your own functionality? Follow our comprehensive guide:
|
|
1452
|
-
|
|
1453
|
-
**\ud83d\udcd8 [Plugin Integration Guide](docs/plugin-integration-guide.md)** - Complete step-by-step tutorial covering:
|
|
1454
|
-
|
|
1455
|
-
- Quick start (5-minute plugin)
|
|
1456
|
-
- Plugin architecture explained
|
|
1457
|
-
- Step-by-step tutorial with real example
|
|
1458
|
-
- Plugin standards and requirements
|
|
1459
|
-
- Testing and debugging
|
|
1460
|
-
- Publishing to npm
|
|
1461
|
-
- Getting your plugin featured
|
|
1462
|
-
|
|
1463
|
-
**Additional Resources:**
|
|
1464
|
-
|
|
1465
|
-
- \ud83d\udcd6 [Plugin System Architecture](docs/plugin-system.md) - Deep dive into how plugins work
|
|
1466
|
-
- \ud83c\udfd7\ufe0f [Plugin Template](https://github.com/0xshariq/mediaproc-plugin-template) - Starter template (coming soon)
|
|
1467
|
-
- \ud83d\udcda [Example Plugins](https://github.com/0xshariq/mediaproc-examples) - Real-world examples (coming soon)
|
|
1468
|
-
|
|
1469
|
-
### Plugin Ideas
|
|
1470
|
-
|
|
1471
|
-
Need inspiration? Here are some plugin ideas:
|
|
1472
|
-
|
|
1473
|
-
- **Filters** - Instagram-style filters, artistic effects
|
|
1474
|
-
- **Converters** - Specialized format conversions
|
|
1475
|
-
- **Social Media** - Platform-specific optimizations (Twitter, Facebook, Instagram)
|
|
1476
|
-
- **Analysis** - Media analysis, quality checking, metadata extraction
|
|
1477
|
-
- **Cloud Integration** - S3, Cloudinary, Imgur upload
|
|
1478
|
-
- **AI/ML** - Face detection, object recognition, style transfer
|
|
1479
|
-
- **Automation** - Batch processing, workflow templates
|
|
1480
|
-
|
|
1481
|
-
---
|
|
1482
|
-
|
|
1483
|
-
## 📄 License
|
|
1484
|
-
|
|
1485
|
-
MediaProc is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details.
|
|
1486
|
-
|
|
1487
|
-
### What This Means
|
|
1488
|
-
|
|
1489
|
-
✅ **You CAN:**
|
|
1490
|
-
|
|
1491
|
-
- Use MediaProc commercially
|
|
1492
|
-
- Modify the source code
|
|
1493
|
-
- Distribute your modifications
|
|
1494
|
-
- Use it privately
|
|
1495
|
-
- Contribute to the project
|
|
1496
|
-
|
|
1497
|
-
⚠️ **You MUST:**
|
|
1498
|
-
|
|
1499
|
-
- Include the original copyright notice
|
|
1500
|
-
- Include the license text
|
|
1501
|
-
- Give credit to **[@0xshariq](https://github.com/0xshariq)** (original author)
|
|
1502
|
-
|
|
1503
|
-
❌ **We're NOT LIABLE:**
|
|
1504
|
-
|
|
1505
|
-
- No warranty is provided
|
|
1506
|
-
- Authors are not liable for any damages
|
|
1507
|
-
|
|
1508
|
-
### Attribution
|
|
1509
|
-
|
|
1510
|
-
If you use MediaProc in your project, a mention would be appreciated:
|
|
1511
|
-
|
|
1512
|
-
```
|
|
1513
|
-
Powered by MediaProc - https://github.com/0xshariq/mediaproc-cli
|
|
1514
|
-
Created by @0xshariq
|
|
1515
|
-
```
|
|
1516
|
-
|
|
1517
|
-
---
|
|
1518
|
-
|
|
1519
|
-
## 👥 Credits
|
|
1520
|
-
|
|
1521
|
-
**Created and maintained by:**
|
|
1522
|
-
|
|
1523
|
-
- **[@0xshariq](https://github.com/0xshariq)** - Original Author & Lead Developer
|
|
1524
|
-
|
|
1525
|
-
**Contributors:**
|
|
1526
|
-
See [CONTRIBUTORS.md](CONTRIBUTORS.md) for the list of amazing people who have contributed to this project.
|
|
1527
|
-
|
|
1528
|
-
Want to be listed here? Check out our [Contributing Guide](CONTRIBUTING.md)!
|
|
1529
|
-
|
|
1530
|
-
---
|