mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
feat(tools): 2.0 phase 5 wave 3a - video depth (22 tools) (#221)
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { AUDIO_INPUTS, IMAGE_INPUTS, VIDEO_INPUTS } from "./modality.js";
|
||||
import { AUDIO_INPUTS, IMAGE_INPUTS, SUBTITLE_INPUTS, VIDEO_INPUTS } from "./modality.js";
|
||||
import type { CategoryInfo, SocialMediaPreset, Tool } from "./types.js";
|
||||
|
||||
export const CATEGORIES: CategoryInfo[] = [
|
||||
@@ -666,6 +666,248 @@ export const TOOLS: Tool[] = [
|
||||
acceptedInputs: VIDEO_INPUTS,
|
||||
executionHint: "long",
|
||||
},
|
||||
{
|
||||
id: "resize-video",
|
||||
name: "Resize Video",
|
||||
description: "Scale a video to a new resolution or preset size",
|
||||
category: "video",
|
||||
icon: "Scaling",
|
||||
route: "/resize-video",
|
||||
modality: "video",
|
||||
acceptedInputs: VIDEO_INPUTS,
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "crop-video",
|
||||
name: "Crop Video",
|
||||
description: "Crop a region out of a video",
|
||||
category: "video",
|
||||
icon: "Crop",
|
||||
route: "/crop-video",
|
||||
modality: "video",
|
||||
acceptedInputs: VIDEO_INPUTS,
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "rotate-video",
|
||||
name: "Rotate Video",
|
||||
description: "Rotate or flip a video",
|
||||
category: "video",
|
||||
icon: "RotateCw",
|
||||
route: "/rotate-video",
|
||||
modality: "video",
|
||||
acceptedInputs: VIDEO_INPUTS,
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "change-fps",
|
||||
name: "Change FPS",
|
||||
description: "Change the frame rate of a video",
|
||||
category: "video",
|
||||
icon: "Gauge",
|
||||
route: "/change-fps",
|
||||
modality: "video",
|
||||
acceptedInputs: VIDEO_INPUTS,
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "video-color",
|
||||
name: "Video Color",
|
||||
description: "Adjust brightness, contrast, saturation, and gamma",
|
||||
category: "video",
|
||||
icon: "SlidersHorizontal",
|
||||
route: "/video-color",
|
||||
modality: "video",
|
||||
acceptedInputs: VIDEO_INPUTS,
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "video-speed",
|
||||
name: "Video Speed",
|
||||
description: "Speed up or slow down a video",
|
||||
category: "video",
|
||||
icon: "FastForward",
|
||||
route: "/video-speed",
|
||||
modality: "video",
|
||||
acceptedInputs: VIDEO_INPUTS,
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "reverse-video",
|
||||
name: "Reverse Video",
|
||||
description: "Play a video clip backwards",
|
||||
category: "video",
|
||||
icon: "Rewind",
|
||||
route: "/reverse-video",
|
||||
modality: "video",
|
||||
acceptedInputs: VIDEO_INPUTS,
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "video-loudnorm",
|
||||
name: "Normalize Audio",
|
||||
description: "Normalize video audio volume to broadcast standard",
|
||||
category: "video",
|
||||
icon: "Volume2",
|
||||
route: "/video-loudnorm",
|
||||
modality: "video",
|
||||
acceptedInputs: VIDEO_INPUTS,
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "aspect-pad",
|
||||
name: "Aspect Pad",
|
||||
description: "Add solid-color bars to fit a target aspect ratio",
|
||||
category: "video",
|
||||
icon: "RectangleHorizontal",
|
||||
route: "/aspect-pad",
|
||||
modality: "video",
|
||||
acceptedInputs: VIDEO_INPUTS,
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "blur-pad",
|
||||
name: "Blur Pad",
|
||||
description: "Fill bars with a blurred copy of the video",
|
||||
category: "video",
|
||||
icon: "GalleryHorizontalEnd",
|
||||
route: "/blur-pad",
|
||||
modality: "video",
|
||||
acceptedInputs: VIDEO_INPUTS,
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "watermark-video",
|
||||
name: "Watermark Video",
|
||||
description: "Burn a text watermark onto video frames",
|
||||
category: "video",
|
||||
icon: "Stamp",
|
||||
route: "/watermark-video",
|
||||
modality: "video",
|
||||
acceptedInputs: VIDEO_INPUTS,
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "stabilize-video",
|
||||
name: "Stabilize Video",
|
||||
description: "Reduce camera shake with two-pass stabilization",
|
||||
category: "video",
|
||||
icon: "Anchor",
|
||||
route: "/stabilize-video",
|
||||
modality: "video",
|
||||
acceptedInputs: VIDEO_INPUTS,
|
||||
executionHint: "long",
|
||||
},
|
||||
{
|
||||
id: "gif-to-video",
|
||||
name: "GIF to Video",
|
||||
description: "Convert an animated GIF into an MP4 or WebM video",
|
||||
category: "video",
|
||||
icon: "Film",
|
||||
route: "/gif-to-video",
|
||||
modality: "video",
|
||||
acceptedInputs: [".gif"],
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "video-to-webp",
|
||||
name: "Video to WebP",
|
||||
description: "Convert a video clip into an animated WebP image",
|
||||
category: "video",
|
||||
icon: "Image",
|
||||
route: "/video-to-webp",
|
||||
modality: "video",
|
||||
acceptedInputs: VIDEO_INPUTS,
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "video-to-frames",
|
||||
name: "Video to Frames",
|
||||
description: "Extract frames from a video as a ZIP of images",
|
||||
category: "video",
|
||||
icon: "Images",
|
||||
route: "/video-to-frames",
|
||||
modality: "video",
|
||||
acceptedInputs: VIDEO_INPUTS,
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "merge-videos",
|
||||
name: "Merge Videos",
|
||||
description: "Join multiple video clips into one file",
|
||||
category: "video",
|
||||
icon: "Combine",
|
||||
route: "/merge-videos",
|
||||
modality: "video",
|
||||
acceptedInputs: VIDEO_INPUTS,
|
||||
executionHint: "long",
|
||||
},
|
||||
{
|
||||
id: "replace-audio",
|
||||
name: "Replace Audio",
|
||||
description: "Swap the audio track of a video with another file",
|
||||
category: "video",
|
||||
icon: "MicVocal",
|
||||
route: "/replace-audio",
|
||||
modality: "video",
|
||||
acceptedInputs: [...VIDEO_INPUTS, ...AUDIO_INPUTS],
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "burn-subtitles",
|
||||
name: "Burn Subtitles",
|
||||
description: "Permanently render subtitles onto video frames",
|
||||
category: "video",
|
||||
icon: "Captions",
|
||||
route: "/burn-subtitles",
|
||||
modality: "video",
|
||||
acceptedInputs: [...VIDEO_INPUTS, ...SUBTITLE_INPUTS],
|
||||
executionHint: "long",
|
||||
},
|
||||
{
|
||||
id: "embed-subtitles",
|
||||
name: "Embed Subtitles",
|
||||
description: "Mux a subtitle track into the video container",
|
||||
category: "video",
|
||||
icon: "MessageSquareText",
|
||||
route: "/embed-subtitles",
|
||||
modality: "video",
|
||||
acceptedInputs: [...VIDEO_INPUTS, ...SUBTITLE_INPUTS],
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "extract-subtitles",
|
||||
name: "Extract Subtitles",
|
||||
description: "Pull the subtitle track out of a video as an SRT file",
|
||||
category: "video",
|
||||
icon: "FileText",
|
||||
route: "/extract-subtitles",
|
||||
modality: "video",
|
||||
acceptedInputs: VIDEO_INPUTS,
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "images-to-video",
|
||||
name: "Images to Video",
|
||||
description: "Turn a set of images into a slideshow video",
|
||||
category: "video",
|
||||
icon: "GalleryThumbnails",
|
||||
route: "/images-to-video",
|
||||
modality: "video",
|
||||
acceptedInputs: IMAGE_INPUTS,
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "video-metadata",
|
||||
name: "Clean Video Metadata",
|
||||
description: "Strip metadata from a video and report what was found",
|
||||
category: "video",
|
||||
icon: "Tags",
|
||||
route: "/video-metadata",
|
||||
modality: "video",
|
||||
acceptedInputs: VIDEO_INPUTS,
|
||||
executionHint: "fast",
|
||||
},
|
||||
// Audio
|
||||
{
|
||||
id: "convert-audio",
|
||||
|
||||
Reference in New Issue
Block a user