# Change video frame rate

Convert between frame rates for different playback contexts

"Projector" (a film collaboration tool like Frame.io) receives footage shot at 60fps but needs 24fps for cinematic delivery and 30fps for web.

## API

<CodeGroup labels={["CLI", "TypeScript", "Python", "curl"]}>
```bash
ittybit video \
  -i https://projector-app.com/footage/scene-4.mov \
  --fps 24 \
  --format mp4
```

```typescript
const task = {
  input: 'https://projector-app.com/footage/scene-4.mov',
  kind: 'video',
  options: {
    fps: 24,
    format: 'mp4',
  },
};

const res = await fetch('https://api.ittybit.com/jobs', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.ITTYBIT_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(task),
});
const data = await res.json();
```

```python

task = {
    "input": "https://projector-app.com/footage/scene-4.mov",
    "kind": "video",
    "options": {
        "fps": 24,
        "format": "mp4",
    },
}

res = requests.post(
    "https://api.ittybit.com/jobs",
    headers={"Authorization": f"Bearer {api_key}"},
    json=task,
)
data = res.json()
```

```bash
TASK='{
  "input": "https://projector-app.com/footage/scene-4.mov",
  "kind": "video",
  "options": {
    "fps": 24,
    "format": "mp4"
  }
}'

curl -X POST https://api.ittybit.com/jobs \
  -H "Authorization: Bearer $ITTYBIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d "$TASK"
```

</CodeGroup>

## CLI

```bash
ittybit video \
  -i scene-4.mov \
  -o scene-4-24fps.mp4 \
  --fps 24

ittybit video \
  -i scene-4.mov \
  -o scene-4-30fps.mp4 \
  --fps 30
```

## Common frame rates

| FPS | Use case                      |
| --- | ----------------------------- |
| 24  | Film, cinematic look          |
| 25  | PAL broadcast                 |
| 30  | Web, general purpose          |
| 60  | Gaming, sports, smooth motion |

## Reduce frame rate to save bandwidth

A 60fps video at 30fps is roughly 30-40% smaller. For content that doesn't need high frame rates (talking heads, slides):

```bash
ittybit video \
  -i webinar.mov \
  -o webinar.mp4 \
  --fps 30 \
  --quality medium
```

## Low frame rate for previews

For hover-preview thumbnails, 15fps is enough and dramatically smaller:

```bash
ittybit video \
  -i clip.mp4 \
  -o preview.mp4 \
  --fps 15 \
  --width 320 \
  --quality very_low
```