Process course videos for streaming

“Chalkboard” (a course platform like Teachable) gets uploads ranging from phone recordings to 4K screencasts. Every video needs to stream smoothly on any device and connection.

Step 1: Web-ready MP4

Convert the raw upload to a browser-friendly format:

ittybit video \
  -i https://chalkboard-app.com/uploads/lesson-3.mov \
  --width 1920 \
  --format mp4 \
  --quality high \
  --cloud
const task = {
  input: "https://chalkboard-app.com/uploads/lesson-3.mov",
  kind: "video",
  options: {
    width: 1920,
    format: "mp4",
    quality: "high",
  },
};

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

task = {
    "input": "https://chalkboard-app.com/uploads/lesson-3.mov",
    "kind": "video",
    "options": {
        "width": 1920,
        "format": "mp4",
        "quality": "high",
    },
}

res = requests.post(
    "https://api.ittybit.com/tasks",
    headers={"Authorization": f"Bearer {api_key}"},
    json=task,
)
data = res.json()
TASK='{
  "input": "https://chalkboard-app.com/uploads/lesson-3.mov",
  "kind": "video",
  "options": {
    "width": 1920,
    "format": "mp4",
    "quality": "high"
  }
}'

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

Step 2: HLS for adaptive streaming

For longer lectures, HLS adapts to the viewer’s bandwidth:

{"input": "https://...", "kind": "adaptive_video", "options": {"format": "hls"}}

Step 3: Thumbnail for the catalog

{"input": "https://...", "kind": "image", "options": {"start": 10, "width": 640, "format": "webp"}}

CLI — all three steps

ittybit video \
  -i lesson-3.mov \
  -o lesson-3.mp4 \
  --width 1920 \
  --quality high

ittybit adaptive \
  -i lesson-3.mov \
  -o lesson-3.m3u8

ittybit image \
  -i lesson-3.mov \
  -o lesson-3-thumb.webp \
  --start 10 \
  --width 640

Quality recommendations for courses

Content typeRecommended widthQuality
Talking head1280medium
Screencast1920high
Whiteboard / slides1920high
Phone recording720medium