Encoding Profiles
Configure transcoding resolution ladders and quality
Encoding profiles define how uploaded videos are transcoded. Manage them in Settings > Encoding in the admin panel.
What profiles control
Each profile sets the full transcoding pipeline for VOD uploads:
| Setting | Effect |
|---|---|
| Resolution ladder | Output renditions (360p through 1080p or higher) |
| Video bitrates | Quality per rendition |
| Audio codec | Typically AAC stereo |
| AV1 | When enabled (default), all ladder rungs encode with AV1 |
| Parallel encoding | Concurrent resolution encodes (CPU fit is checked in the UI) |
| Encryption | AES-128 always for HLS/CMAF (Edge decrypts at playback) |
| Packaging | HLS, DASH, or CMAF |
| Thumbnail generation | Poster and sprite settings |
Profiles are stored in the database and passed to bin/media-vod when VideoEncodingJob runs.
CDN / public base URLs are not part of encoding profiles. Configure them on the output storage disk (cdn_url) or on a cloud storage provider (cdn_endpoint).
Profile settings
Each profile typically includes:
- Name: Identifier shown in upload UI
- Resolutions: Output ladder (e.g. 360p, 480p, 720p, 1080p)
- Bitrates: Target video bitrates per resolution (kbps)
- Audio: AAC stereo configuration, sample rate, bitrate
- Encryption: AES-128 always applied for HLS/CMAF via Edge
- Packaging: HLS, DASH, or both
Example ladder
| Rendition | Resolution | Video bitrate |
|---|---|---|
| 360p | 640x360 | 800 kbps |
| 480p | 854x480 | 1400 kbps |
| 720p | 1280x720 | 2800 kbps |
| 1080p | 1920x1080 | 5000 kbps |
Higher rungs improve quality on large screens but increase encode time and storage.
Default profile
New uploads use the default profile unless overridden per video or collection. Set the default in Settings > Encoding.
Only one profile should be marked default. Changing the default affects new uploads only; already-encoded videos keep their original profile.
Per-video and per-collection overrides
Assign a different profile when uploading or from the collection settings page. Useful when:
- Marketing content needs 1080p but internal training uses 720p max
- Premium content requires encryption while public clips do not
CLI integration
Profiles are passed to bin/media-vod when VideoEncodingJob runs. The job reads profile configuration from the database and application config.
Debug a failed encode by running the media binary manually inside the queue container:
docker compose exec queue bin/media-vod --helpCheck storage/logs/laravel.log for the exact command and profile ID used.
Encryption and Edge
HLS segments are always AES-128 encrypted at package time. Playback uses signed Edge URLs for HLS and DASH. See Security, Edge media.
AES-128 and signed tokens require Edge (or a CDN that supports them). Cloud storage alone is not enough.
Tuning tips
- Match resolution ladder to your audience (mobile-first vs. desktop)
- Higher bitrates improve quality but increase storage and bandwidth
- Enable encryption for premium or restricted content
- Test with a short sample clip before bulk encoding
- Avoid ladders with more than 6 rungs unless you have ample CPU
Source-aware ladders
If most uploads are 720p source, including a 1080p rung adds encode time without quality gain. Consider a profile capped at source resolution.
Queue impact
Each resolution adds encoding time. A 6-rung ladder on a long video may take significant CPU time:
docker compose up -d --scale queue=3Monitor queue depth:
docker compose exec redis redis-cli llen queues:video-encodingCreating a new profile
- Open Settings > Encoding
- Click Add profile
- Configure ladder, bitrates, and packaging
- Save and set as default if needed
- Upload a short sample clip to validate output
Uploads accept an optional encoding_profile_id so a non-default profile can be used on the same path as production.
Operator smoke-test artisan commands (encoding:test-profiles, live:test) are local-only and gitignored; they are not part of the shipped application.
Pipeline overview: Encoding & Transcoding. Env keys: Environment Variables. Playback security: Security.