@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.
Files changed (105) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +21 -14
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/add.d.ts.map +1 -1
  5. package/dist/commands/add.js +2 -0
  6. package/dist/commands/add.js.map +1 -1
  7. package/dist/commands/batch.d.ts +3 -0
  8. package/dist/commands/batch.d.ts.map +1 -0
  9. package/dist/commands/batch.js +278 -0
  10. package/dist/commands/batch.js.map +1 -0
  11. package/dist/commands/benchmark.d.ts +3 -0
  12. package/dist/commands/benchmark.d.ts.map +1 -0
  13. package/dist/commands/benchmark.js +126 -0
  14. package/dist/commands/benchmark.js.map +1 -0
  15. package/dist/commands/compare.d.ts +3 -0
  16. package/dist/commands/compare.d.ts.map +1 -0
  17. package/dist/commands/compare.js +104 -0
  18. package/dist/commands/compare.js.map +1 -0
  19. package/dist/commands/delete.d.ts.map +1 -1
  20. package/dist/commands/delete.js +2 -0
  21. package/dist/commands/delete.js.map +1 -1
  22. package/dist/commands/detect.d.ts +6 -0
  23. package/dist/commands/detect.d.ts.map +1 -0
  24. package/dist/commands/detect.js +92 -0
  25. package/dist/commands/detect.js.map +1 -0
  26. package/dist/commands/doctor.d.ts +3 -0
  27. package/dist/commands/doctor.d.ts.map +1 -0
  28. package/dist/commands/doctor.js +222 -0
  29. package/dist/commands/doctor.js.map +1 -0
  30. package/dist/commands/help.d.ts.map +1 -1
  31. package/dist/commands/help.js +2 -0
  32. package/dist/commands/help.js.map +1 -1
  33. package/dist/commands/history.d.ts +3 -0
  34. package/dist/commands/history.d.ts.map +1 -0
  35. package/dist/commands/history.js +84 -0
  36. package/dist/commands/history.js.map +1 -0
  37. package/dist/commands/list.d.ts.map +1 -1
  38. package/dist/commands/list.js +2 -0
  39. package/dist/commands/list.js.map +1 -1
  40. package/dist/commands/plugins.d.ts.map +1 -1
  41. package/dist/commands/plugins.js +2 -0
  42. package/dist/commands/plugins.js.map +1 -1
  43. package/dist/commands/remove.d.ts.map +1 -1
  44. package/dist/commands/remove.js +2 -0
  45. package/dist/commands/remove.js.map +1 -1
  46. package/dist/commands/search.d.ts +3 -0
  47. package/dist/commands/search.d.ts.map +1 -0
  48. package/dist/commands/search.js +193 -0
  49. package/dist/commands/search.js.map +1 -0
  50. package/dist/commands/stats.d.ts +3 -0
  51. package/dist/commands/stats.d.ts.map +1 -0
  52. package/dist/commands/stats.js +157 -0
  53. package/dist/commands/stats.js.map +1 -0
  54. package/dist/commands/template.d.ts +3 -0
  55. package/dist/commands/template.d.ts.map +1 -0
  56. package/dist/commands/template.js +190 -0
  57. package/dist/commands/template.js.map +1 -0
  58. package/dist/commands/update.d.ts.map +1 -1
  59. package/dist/commands/update.js +2 -0
  60. package/dist/commands/update.js.map +1 -1
  61. package/dist/commands/watch.d.ts +3 -0
  62. package/dist/commands/watch.d.ts.map +1 -0
  63. package/dist/commands/watch.js +108 -0
  64. package/dist/commands/watch.js.map +1 -0
  65. package/dist/commands/workspace.d.ts +3 -0
  66. package/dist/commands/workspace.d.ts.map +1 -0
  67. package/dist/commands/workspace.js +208 -0
  68. package/dist/commands/workspace.js.map +1 -0
  69. package/dist/history-manager.d.ts +27 -0
  70. package/dist/history-manager.d.ts.map +1 -0
  71. package/dist/history-manager.js +84 -0
  72. package/dist/history-manager.js.map +1 -0
  73. package/dist/plugin-api.d.ts +6 -7
  74. package/dist/plugin-api.d.ts.map +1 -1
  75. package/dist/plugin-manager.d.ts +6 -0
  76. package/dist/plugin-manager.d.ts.map +1 -1
  77. package/dist/plugin-manager.js +27 -0
  78. package/dist/plugin-manager.js.map +1 -1
  79. package/package.json +5 -6
  80. package/LICENSE +0 -72
  81. package/README.md +0 -1530
  82. package/dist/__tests__/plugin-manager.test.d.ts +0 -2
  83. package/dist/__tests__/plugin-manager.test.d.ts.map +0 -1
  84. package/dist/__tests__/plugin-manager.test.js +0 -7
  85. package/dist/__tests__/plugin-manager.test.js.map +0 -1
  86. package/dist/commands/convert.d.ts +0 -7
  87. package/dist/commands/convert.d.ts.map +0 -1
  88. package/dist/commands/convert.js +0 -96
  89. package/dist/commands/convert.js.map +0 -1
  90. package/dist/commands/info.d.ts +0 -7
  91. package/dist/commands/info.d.ts.map +0 -1
  92. package/dist/commands/info.js +0 -117
  93. package/dist/commands/info.js.map +0 -1
  94. package/dist/commands/optimize.d.ts +0 -7
  95. package/dist/commands/optimize.d.ts.map +0 -1
  96. package/dist/commands/optimize.js +0 -196
  97. package/dist/commands/optimize.js.map +0 -1
  98. package/dist/commands/run.d.ts +0 -3
  99. package/dist/commands/run.d.ts.map +0 -1
  100. package/dist/commands/run.js +0 -16
  101. package/dist/commands/run.js.map +0 -1
  102. package/dist/commands/validate.d.ts +0 -3
  103. package/dist/commands/validate.d.ts.map +0 -1
  104. package/dist/commands/validate.js +0 -16
  105. 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
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
- [![Version](https://img.shields.io/badge/version-0.6.0-blue.svg)](https://www.npmjs.com/package/@mediaproc/cli)
7
- [![Node.js Version](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen)](https://nodejs.org/)
8
- [![TypeScript](https://img.shields.io/badge/TypeScript-5.3.3-blue)](https://www.typescriptlang.org/)
9
- [![Status](https://img.shields.io/badge/status-beta-green)](https://github.com/0xshariq/mediaproc)
10
- [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](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
- ---