返回 Skill 列表
extension
分类: 内容与媒体无需 API Key

video-format-conversion

使用each::sense AI在不同格式、编解码器和纵横比之间转换视频。支持MP4、WebM、GIF、ProRes以及针对社交媒体优化的输出。

person作者: jakexiaohubgithub

Video Format Conversion

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.

Features

  • Format Conversion: Convert between MP4, WebM, MOV, GIF, and more
  • Codec Transcoding: H.264, H.265/HEVC, VP9, ProRes, and others
  • Aspect Ratio Changes: 16:9 to 9:16, 1:1, 4:3, and custom ratios
  • Platform Optimization: Instagram, TikTok, YouTube, Twitter optimized outputs
  • Web Streaming: HLS-ready and web-optimized encoding
  • Quality Control: Bitrate, resolution, and compression settings
  • Batch Processing: Convert multiple videos in sequence

Quick Start

curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "messages": [{"role": "user", "content": "Convert this video to MP4 H.264 format optimized for web playback"}],
    "model": "eachsense/beta",
    "stream": true,
    "mode": "max",
    "image_urls": ["https://example.com/source-video.mov"]
  }'

Supported Formats & Codecs

| 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 |

Aspect Ratios

| 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 |

Use Case Examples

1. Convert to MP4 (H.264)

Standard MP4 conversion with H.264 codec for maximum compatibility.

curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "messages": [{"role": "user", "content": "Convert this video to MP4 with H.264 codec. Use high quality settings with a bitrate suitable for 1080p playback. Maintain original aspect ratio."}],
    "model": "eachsense/beta",
    "stream": true,
    "mode": "max",
    "image_urls": ["https://example.com/source-video.mov"]
  }'

2. Convert to WebM

WebM format with VP9 codec for efficient web delivery.

curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "messages": [{"role": "user", "content": "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."}],
    "model": "eachsense/beta",
    "stream": true,
    "mode": "max",
    "image_urls": ["https://example.com/source-video.mp4"]
  }'

3. Convert to GIF

Create animated GIF from video for social sharing and previews.

curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "messages": [{"role": "user", "content": "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."}],
    "model": "eachsense/beta",
    "stream": true,
    "mode": "eco",
    "image_urls": ["https://example.com/source-video.mp4"]
  }'

4. Convert 16:9 to 9:16 (Vertical)

Transform landscape video to vertical format for mobile platforms.

curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "messages": [{"role": "user", "content": "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."}],
    "model": "eachsense/beta",
    "stream": true,
    "mode": "max",
    "image_urls": ["https://example.com/landscape-video.mp4"]
  }'

5. Convert to Square 1:1

Create square format video for Instagram feed and Twitter.

curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "messages": [{"role": "user", "content": "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."}],
    "model": "eachsense/beta",
    "stream": true,
    "mode": "max",
    "image_urls": ["https://example.com/widescreen-video.mp4"]
  }'

6. Convert to 4:3

Classic 4:3 aspect ratio for presentations and legacy displays.

curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "messages": [{"role": "user", "content": "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."}],
    "model": "eachsense/beta",
    "stream": true,
    "mode": "eco",
    "image_urls": ["https://example.com/widescreen-video.mp4"]
  }'

7. Optimize for Web Streaming

Create web-optimized video with fast start and adaptive quality.

curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "messages": [{"role": "user", "content": "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."}],
    "model": "eachsense/beta",
    "stream": true,
    "mode": "max",
    "image_urls": ["https://example.com/raw-video.mov"]
  }'

8. Convert to Apple ProRes

Professional ProRes format for video editing workflows.

curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "messages": [{"role": "user", "content": "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."}],
    "model": "eachsense/beta",
    "stream": true,
    "mode": "max",
    "image_urls": ["https://example.com/compressed-video.mp4"]
  }'

9. Convert for Social Media (Instagram/TikTok)

Platform-optimized video for Instagram Reels and TikTok.

curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "messages": [{"role": "user", "content": "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."}],
    "model": "eachsense/beta",
    "stream": true,
    "mode": "max",
    "image_urls": ["https://example.com/source-video.mov"]
  }'

10. Batch Convert Multiple Videos

Process multiple videos in a single session with consistent settings.

# Start batch conversion session
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "messages": [{"role": "user", "content": "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."}],
    "model": "eachsense/beta",
    "stream": true,
    "session_id": "batch-convert-001",
    "mode": "eco",
    "image_urls": ["https://example.com/video1.mov"]
  }'

# Continue with second video (same session)
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "messages": [{"role": "user", "content": "Convert the next video with the same settings."}],
    "model": "eachsense/beta",
    "stream": true,
    "session_id": "batch-convert-001",
    "mode": "eco",
    "image_urls": ["https://example.com/video2.mov"]
  }'

# Continue with third video
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "messages": [{"role": "user", "content": "Convert this one too, same format."}],
    "model": "eachsense/beta",
    "stream": true,
    "session_id": "batch-convert-001",
    "mode": "eco",
    "image_urls": ["https://example.com/video3.mov"]
  }'

Mode Selection

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 |

Multi-Turn Conversion Session

Use session_id to maintain context for iterative conversions:

# Initial conversion
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "messages": [{"role": "user", "content": "Convert this video to MP4 for YouTube at 1080p"}],
    "model": "eachsense/beta",
    "stream": true,
    "session_id": "youtube-upload-project",
    "image_urls": ["https://example.com/raw-footage.mov"]
  }'

# Request different format from same source
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "messages": [{"role": "user", "content": "Now create a vertical version of that same video for YouTube Shorts at 9:16"}],
    "model": "eachsense/beta",
    "stream": true,
    "session_id": "youtube-upload-project"
  }'

# Request thumbnail extraction
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "messages": [{"role": "user", "content": "Extract a thumbnail from the best frame of that video"}],
    "model": "eachsense/beta",
    "stream": true,
    "session_id": "youtube-upload-project"
  }'

Platform-Specific Settings

YouTube

  • Format: MP4 (H.264)
  • Resolution: 1080p or 4K
  • Frame rate: Match source (24, 30, or 60fps)
  • Bitrate: 8-12 Mbps for 1080p, 35-45 Mbps for 4K

Instagram Reels / TikTok

  • Format: MP4 (H.264)
  • Aspect ratio: 9:16
  • Resolution: 1080x1920
  • Duration: Under 60 seconds (Reels) / 3 minutes (TikTok)
  • File size: Under 100MB

Twitter/X

  • Format: MP4 (H.264)
  • Aspect ratio: 16:9, 1:1, or 9:16
  • Resolution: Up to 1920x1200
  • Duration: Up to 2:20 (140 seconds)
  • File size: Under 512MB

LinkedIn

  • Format: MP4 (H.264)
  • Aspect ratio: 16:9 or 1:1
  • Resolution: 1080p maximum
  • Duration: 10 minutes maximum

Error Handling

| 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 |

Best Practices

Quality

  • Use max mode for final deliverables and professional outputs
  • Use eco mode for previews and batch processing
  • Specify target bitrate for predictable file sizes
  • Request 2-pass encoding for better quality at lower bitrates

Performance

  • Set client timeout to minimum 10 minutes for video processing
  • Use eco mode for faster turnaround on large batches
  • Process shorter clips when testing settings

Compatibility

  • H.264 is the most universally compatible codec
  • WebM/VP9 offers better compression but less device support
  • ProRes is ideal for editing workflows but creates large files
  • Always test output on target devices/platforms

Related Skills

  • each-sense - Core API documentation
  • video-generation - Generate videos from text/images
  • video-editing - Edit and enhance existing videos