Video Editor
FFmpeg-based video editing with a git-like staging workflow. All operations generate a preview in staging that must be approved before the final file is created.
Workflow
- Execute FFmpeg with output to
~/.video-editor/staging/{id}/output.{ext} - Save metadata:
python scripts/staging_save.py {id} --original {file} --operation {op} --command "{cmd}" --params '{json}' - Open preview:
python scripts/staging_preview.py {id} - Wait for user approval
- If approved:
python scripts/staging_approve.py {id} --output {destination} - If rejected:
python scripts/staging_discard.py {id}
Staging Scripts
All scripts are in the scripts/ directory. Always use full path from skill base directory.
| Script | Purpose |
|--------|---------|
| staging_save.py | Save operation metadata after FFmpeg execution |
| staging_approve.py | Move staged file to final destination, record in history |
| staging_discard.py | Remove staged file and metadata |
| staging_preview.py | Open staged file in configured player (mpv/vlc) |
| staging_status.py | List all pending staged files |
History & Advanced Workflow
| Script | Purpose |
|--------|---------|
| history.py | List/show past operations |
| history_replay.py | Re-apply an operation to a different file |
| batch_run.py | Execute FFmpeg command on multiple files |
| backup_create.py | Create backup before destructive operation |
| backup_restore.py | Restore from backup (undo/redo) |
FFmpeg Commands
For FFmpeg command patterns and best practices, see references/operations.md.
Platform Presets
For platform-specific encoding settings (WhatsApp, Instagram, YouTube, etc.), see references/presets.md.
Troubleshooting
For common issues and solutions, see references/troubleshooting.md.
Logs
All operations are logged to ~/.video-editor/logs/video-editor.log.
Configure logging in ~/.video-editor/config.json:
{
"log_level": "INFO",
"log_max_size_mb": 10,
"log_backup_count": 3
}
Directory Structure
~/.video-editor/
├── staging/{id}/ # Preview files pending approval
│ ├── output.{ext} # The generated file
│ └── metadata.json # Operation details
├── backups/{id}/ # Backups for undo/redo
│ └── original.{ext}
├── logs/ # Operation logs
│ └── video-editor.log # Rotating log file
├── history.json # All completed operations
├── undo_stack.json # Operations available for redo
└── config.json # User preferences
Config Options
The ~/.video-editor/config.json file supports:
{
"player": "mpv", // Preview player: mpv, vlc, xdg-open
"default_output_dir": ".", // Default output directory
"auto_preview": true, // Auto-open preview after staging
"keep_original": true // Never overwrite original files
}