We offer customization solutions and support ([email protected]) | Visit us on bitbyte3 for complete VOD solutions with apps.
NixStream
Configuration

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:

SettingEffect
Resolution ladderOutput renditions (360p through 1080p or higher)
Video bitratesQuality per rendition
Audio codecTypically AAC stereo
AV1When enabled (default), all ladder rungs encode with AV1
Parallel encodingConcurrent resolution encodes (CPU fit is checked in the UI)
EncryptionAES-128 always for HLS/CMAF (Edge decrypts at playback)
PackagingHLS, DASH, or CMAF
Thumbnail generationPoster 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

RenditionResolutionVideo bitrate
360p640x360800 kbps
480p854x4801400 kbps
720p1280x7202800 kbps
1080p1920x10805000 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 --help

Check 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=3

Monitor queue depth:

docker compose exec redis redis-cli llen queues:video-encoding

Creating a new profile

  1. Open Settings > Encoding
  2. Click Add profile
  3. Configure ladder, bitrates, and packaging
  4. Save and set as default if needed
  5. 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.

On this page