Convert videos between formats, codecs, and aspect ratios using each::sense AI. Support for MP4, WebM, GIF, ProRes, and social media optimized outputs.
Convert videos between formats, codecs, and aspect ratios using each::sense. This skill handles format conversion, codec transcoding, aspect ratio changes, and optimization for various platforms and use cases.
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Convert this video to MP4 H.264 format optimized for web playback",
"mode": "max",
"image_urls": ["https://example.com/source-video.mov"]
}'
| Format | Codecs | Use Cases |
|---|---|---|
| MP4 | H.264, H.265/HEVC | Universal playback, web, mobile |
| WebM | VP9, VP8 | Web browsers, smaller file sizes |
| MOV | ProRes, H.264 | Professional editing, Apple ecosystem |
| GIF | - | Social media, previews, loops |
| MKV | H.264, H.265, VP9 | Archival, high quality |
| Ratio | Resolution | Use Case |
|---|---|---|
| 16:9 | 1920x1080 | YouTube, standard landscape |
| 9:16 | 1080x1920 | TikTok, Instagram Reels, Stories |
| 1:1 | 1080x1080 | Instagram feed, Twitter |
| 4:3 | 1440x1080 | Classic TV, presentations |
| 4:5 | 1080x1350 | Instagram portrait posts |
| 21:9 | 2560x1080 | Cinematic ultrawide |
Standard MP4 conversion with H.264 codec for maximum compatibility.
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Convert this video to MP4 with H.264 codec. Use high quality settings with a bitrate suitable for 1080p playback. Maintain original aspect ratio.",
"mode": "max",
"image_urls": ["https://example.com/source-video.mov"]
}'
WebM format with VP9 codec for efficient web delivery.
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Convert this MP4 video to WebM format using VP9 codec. Optimize for web streaming with good quality at smaller file size. Target around 5 Mbps bitrate.",
"mode": "max",
"image_urls": ["https://example.com/source-video.mp4"]
}'
Create animated GIF from video for social sharing and previews.
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Convert this video to an animated GIF. Use the first 5 seconds, resize to 480px width, and optimize for file size under 10MB. Create a smooth loop if possible.",
"mode": "eco",
"image_urls": ["https://example.com/source-video.mp4"]
}'
Transform landscape video to vertical format for mobile platforms.
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Convert this 16:9 landscape video to 9:16 vertical format. Use smart cropping to keep the main subject centered. Output as MP4 H.264 at 1080x1920 resolution.",
"mode": "max",
"image_urls": ["https://example.com/landscape-video.mp4"]
}'
Create square format video for Instagram feed and Twitter.
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Convert this video to 1:1 square format at 1080x1080 resolution. Center crop the content and output as MP4 with H.264 codec optimized for social media.",
"mode": "max",
"image_urls": ["https://example.com/widescreen-video.mp4"]
}'
Classic 4:3 aspect ratio for presentations and legacy displays.
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Convert this 16:9 video to 4:3 aspect ratio. Add letterboxing or pillarboxing as needed rather than cropping. Output at 1440x1080 resolution in MP4 format.",
"mode": "eco",
"image_urls": ["https://example.com/widescreen-video.mp4"]
}'
Create web-optimized video with fast start and adaptive quality.
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Optimize this video for web streaming. Convert to MP4 H.264 with faststart enabled for progressive download. Use 2-pass encoding, target 3-5 Mbps bitrate, AAC audio at 128kbps. Ensure moov atom is at the beginning for instant playback.",
"mode": "max",
"image_urls": ["https://example.com/raw-video.mov"]
}'
Professional ProRes format for video editing workflows.
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Convert this video to Apple ProRes 422 format in a MOV container. Maintain original resolution and frame rate. This is for professional editing in Final Cut Pro and DaVinci Resolve.",
"mode": "max",
"image_urls": ["https://example.com/compressed-video.mp4"]
}'
Platform-optimized video for Instagram Reels and TikTok.
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Convert this video for Instagram Reels and TikTok. Use 9:16 aspect ratio at 1080x1920, MP4 H.264 codec, 30fps, and optimize for mobile playback. Keep file size under 100MB and duration under 60 seconds.",
"mode": "max",
"image_urls": ["https://example.com/source-video.mov"]
}'
Process multiple videos in a single session with consistent settings.
# Start batch conversion session
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "I need to convert multiple videos to MP4 H.264 format at 1080p. All videos should use the same encoding settings: H.264 High Profile, 8 Mbps bitrate, AAC audio at 192kbps. Start with this first video.",
"session_id": "batch-convert-001",
"mode": "eco",
"image_urls": ["https://example.com/video1.mov"]
}'
# Continue with second video (same session)
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Convert the next video with the same settings.",
"session_id": "batch-convert-001",
"mode": "eco",
"image_urls": ["https://example.com/video2.mov"]
}'
# Continue with third video
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Convert this one too, same format.",
"session_id": "batch-convert-001",
"mode": "eco",
"image_urls": ["https://example.com/video3.mov"]
}'
Ask your users before converting:
"Do you want fast & cheap, or high quality?"
| Mode | Best For | Speed | Quality |
|---|---|---|---|
max | Final deliverables, ProRes, professional workflows | Slower | Highest |
eco | Quick previews, batch processing, draft conversions | Faster | Good |
Use session_id to maintain context for iterative conversions:
# Initial conversion
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Convert this video to MP4 for YouTube at 1080p",
"session_id": "youtube-upload-project",
"image_urls": ["https://example.com/raw-footage.mov"]
}'
# Request different format from same source
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Now create a vertical version of that same video for YouTube Shorts at 9:16",
"session_id": "youtube-upload-project"
}'
# Request thumbnail extraction
curl -X POST https://sense.eachlabs.run/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"message": "Extract a thumbnail from the best frame of that video",
"session_id": "youtube-upload-project"
}'
| Error | Cause | Solution |
|---|---|---|
Failed to create prediction: HTTP 422 | Insufficient balance | Top up at eachlabs.ai |
| Timeout | Large video file or complex conversion | Set client timeout to minimum 10 minutes |
| Unsupported format | Source format not recognized | Convert to intermediate format first |
| File too large | Video exceeds size limits | Compress or split video before conversion |
max mode for final deliverables and professional outputseco mode for previews and batch processingeco mode for faster turnaround on large batcheseach-sense - Core API documentationvideo-generation - Generate videos from text/imagesvideo-editing - Edit and enhance existing videos