image-to-video — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited image-to-video (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Combine a static image with an audio file to produce an MP4 via FFmpeg. Supports resolution presets, audio visualization overlays, and batch processing. For image generation, use image-gen.
| Signal | Load | Why |
|---|---|---|
| FFmpeg filter graphs for visualization modes | references/ffmpeg-filters.md | Scale/pad, showwaves, showspectrum, overlay filters |
ffmpeg -version. If missing, stop with install instructions.| Preset | Dimensions | Platform |
|---|---|---|
1080p | 1920x1080 | YouTube HD (default) |
720p | 1280x720 | Standard HD |
square | 1080x1080 | Instagram, social |
vertical | 1080x1920 | Stories, Reels, TikTok |
Visualization modes (off unless requested): waveform, spectrum, cqt, bars.
Gate: FFmpeg installed, both files exist, parameters resolved.
Use the user's output path or derive from audio filename (/same/dir/filename.mp4). Verify directory is writable.
Defaults: libx264 preset medium, CRF 23, yuv420p, 192k AAC.
python3 $HOME/vexjoy-agent/skills/content/image-to-video/scripts/image_to_video.py \
--image /path/to/image.png --audio /path/to/audio.mp3 \
--output /path/to/output.mp4 --resolution 1080p --visualization staticBatch mode (matched pairs in workspace/input/):
python3 $HOME/vexjoy-agent/skills/content/image-to-video/scripts/image_to_video.py \
--process-workspace --visualization waveformGate: Script exits 0.
FFmpeg can exit 0 but produce a corrupt file. Always probe:
ffprobe -v error -show_entries format=duration,size -show_entries stream=codec_name,width,height \
-of default=noprint_wrappers=1 /path/to/output.mp4Confirm video duration matches audio (within 1s). Report: file path, size, duration, resolution, visualization mode.
| Error | Cause | Solution |
|---|---|---|
| FFmpeg not found | Not installed | apt install ffmpeg or brew install ffmpeg |
| Image/audio not found | Wrong or relative path | Use absolute paths; check with ls -la |
| FFmpeg filter errors | Minimal build lacks showwaves/showcqt | Install full FFmpeg; fall back to --visualization static |
| Cannot determine audio duration | Corrupted audio file | Test with ffprobe; convert: ffmpeg -i input -acodec pcm_s16le output.wav |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.