When you upload content, shortkit’s transcoding pipeline processes it into multiple formats optimized for adaptive streaming across all devices and network conditions.
What gets generated
For every uploaded video, the pipeline produces:
| Asset Type | Description |
|---|
| ABR ladder | Multiple quality renditions in H.264 and AV1 |
| HLS manifests | .m3u8 master and variant playlists |
| DASH manifests | .mpd manifest files |
| Progressive MP4 | Single-file download for short content |
| First-frame thumbnails | Per-rendition quality |
| Preview GIF/WebP | Animated 3-second loop |
| Storyboard sprites | Scrubber thumbnail strip |
| Auto-captions | Server-side speech-to-text (if enabled) |
ABR rendition ladder
The adaptive bitrate ladder ensures smooth playback across varying network conditions:
| Rendition | Resolution | H.264 Bitrate | AV1 Bitrate | Segment Duration |
|---|
| 1080p | 1920×1080 | ~4,500 kbps | ~2,500 kbps | 4 seconds |
| 720p | 1280×720 | ~2,500 kbps | ~1,500 kbps | 4 seconds |
| 480p | 854×480 | ~1,200 kbps | ~700 kbps | 4 seconds |
| 360p | 640×360 | ~700 kbps | ~400 kbps | 4 seconds |
| 240p | 426×240 | ~400 kbps | ~250 kbps | 4 seconds |
| 144p | 256×144 | ~200 kbps | ~120 kbps | 4 seconds |
AV1 provides ~40% better compression than H.264 at equivalent quality. The SDK automatically selects AV1 on devices with hardware decode support.
Codec selection
Both codecs are generated by default:
- H.264 (AVC): Universal compatibility, supported everywhere
- AV1: Better compression, hardware decode on newer devices (iPhone 15+, Pixel 6+, etc.)
The SDK handles codec selection automatically based on device capabilities.
Encoding settings
Video encoding
| Setting | H.264 | AV1 |
|---|
| Profile | High | Main |
| Level | 4.1 | 5.1 |
| Preset | medium | 6 |
| GOP size | 2 seconds | 2 seconds |
| B-frames | 3 | 3 |
| Rate control | CRF (quality-based) | CRF |
Audio encoding
| Setting | Value |
|---|
| Codec | AAC-LC |
| Bitrate | 128 kbps (stereo) |
| Sample rate | 48 kHz |
| Channels | Stereo (or source) |
Short content optimization
For videos under 15 seconds, the pipeline additionally generates a progressive MP4:
- Resolution: 720p
- Single file: No segmentation overhead
- Faster startup: No manifest negotiation required
The SDK automatically uses progressive MP4 for short content when network conditions allow.
Thumbnail generation
First-frame thumbnails
Generated at each rendition’s resolution to prevent quality mismatch when transitioning from thumbnail to video:
| Rendition | Thumbnail Size |
|---|
| 1080p | 1920×1080 |
| 720p | 1280×720 |
| 480p | 854×480 |
| 360p | 640×360 |
Preview GIF/WebP
Animated preview of the first 3 seconds:
- Resolution: 360p
- Frame rate: 10 fps
- Looped: Yes
- Format: WebP (with GIF fallback)
Used for entry widget previews and hover states.
Storyboard sprites
A sprite sheet of frames at regular intervals for scrubber thumbnail preview:
- Interval: Every 2 seconds
- Thumbnail size: 160×90
- Format: JPEG sprite sheet + VTT timing file
Auto-captioning
Server-side speech-to-text generates caption tracks automatically:
Supported languages
English, Spanish, French, German, Italian, Portuguese, Dutch, Polish, Russian, Japanese, Korean, Chinese (Simplified), Chinese (Traditional), Arabic, Hindi, and more.
Custom vocabulary
Improve accuracy for domain-specific terms:
# Add custom vocabulary phrases
curl -X POST https://api.shortkit.dev/v1/transcription-vocabulary \
-H "Authorization: Bearer sk_live_your_secret_key" \
-H "Content-Type: application/json" \
-d '{
"phrases": [
"shortkit",
"ABR",
"TikTok",
"CNN",
"specific-product-name"
]
}'
- Maximum 1,000 phrases per organization
- Managed via Admin Portal (Settings → Transcription Vocabulary) or API
Caption output
Generated as VTT format, synchronized with video timing:
WEBVTT
00:00:00.000 --> 00:00:02.500
Welcome to today's breaking news coverage.
00:00:02.500 --> 00:00:05.000
We're following a developing story...
4K and HDR
When source content is 4K or HDR:
4K content
- Top rendition preserves 4K resolution (3840×2160)
- Lower renditions scaled as normal
HDR content (HDR10/Dolby Vision)
- HDR metadata preserved in top rendition
- SDR renditions generated for non-HDR devices
- Manifest includes HDR capability flags
Watermarking
Optional watermarking applied during transcoding:
Visible watermark
curl -X PUT https://api.shortkit.dev/v1/config/watermark \
-H "Authorization: Bearer sk_live_your_secret_key" \
-H "Content-Type: application/json" \
-d '{
"visible": {
"enabled": true,
"text": "© Your Company",
"position": "bottomRight",
"opacity": 0.7,
"fontSize": 14
}
}'
Forensic watermark
Invisible watermark for tracking unauthorized distribution:
curl -X PUT https://api.shortkit.dev/v1/config/watermark \
-H "Authorization: Bearer sk_live_your_secret_key" \
-H "Content-Type: application/json" \
-d '{
"forensic": {
"enabled": true
}
}'
Configure in Admin Portal: Settings → Watermarking
Processing times
| Content Duration | Typical Time |
|---|
| < 30 seconds | 1-2 minutes |
| 1 minute | 2-3 minutes |
| 5 minutes | 5-8 minutes |
| 10 minutes | 10-15 minutes |
Includes full ABR ladder (H.264 + AV1), all thumbnails, preview GIF, storyboard, and auto-captions.
Priority processing
For time-sensitive content (breaking news), use priority processing:
curl -X POST https://api.shortkit.dev/v1/uploads \
-H "Authorization: Bearer sk_live_your_secret_key" \
-H "Content-Type: application/json" \
-d '{
"title": "Breaking News",
"priority": "high"
}'
Priority levels:
normal (default): Standard queue
high: Expedited processing
urgent: Immediate processing (additional charges may apply)
Error handling
If transcoding fails, the content enters error status:
{
"event": "content.errored",
"data": {
"contentId": "cnt_abc123",
"error": {
"code": "TRANSCODE_FAILED",
"message": "Video codec not supported",
"details": {
"sourceCodec": "unknown",
"stage": "decode"
}
}
}
}
Common errors:
| Error | Cause | Solution |
|---|
UNSUPPORTED_CODEC | Source uses unsupported codec | Re-encode source to H.264/H.265 |
CORRUPT_FILE | File is corrupted or incomplete | Re-upload file |
AUDIO_MISSING | No audio track found | Add audio track or accept silent video |
RESOLUTION_TOO_HIGH | Exceeds 4K limit | Scale down source |
Failed jobs can be retried from the Admin Portal or API:
curl -X POST https://api.shortkit.dev/v1/content/{contentId}/retry \
-H "Authorization: Bearer sk_live_your_secret_key"
Next steps