Skip to content

[feat] : migrate VMAF to ABR ladder#16

Merged
maulik-mk merged 5 commits intodevfrom
feat/migrate-vmaf-to-abr-ladder
Apr 5, 2026
Merged

[feat] : migrate VMAF to ABR ladder#16
maulik-mk merged 5 commits intodevfrom
feat/migrate-vmaf-to-abr-ladder

Conversation

@maulik-mk
Copy link
Copy Markdown
Owner

@maulik-mk maulik-mk commented Apr 5, 2026

ABR Ladder

VMAF complexity to ABR Ladder

All Advanced Streaming Tier

  1. audio : audio.json

  2. h264 SDR : avc.sdr.json

  3. h265 SDR : hvc.sdr.json

  4. h265 HDR : hvc.pq.json

  5. h265 Dolby Vision : dvh.pq.json

This pull request introduces several significant changes to the video processing pipeline, environment configuration, and transcoding logic. The main improvements include downloading source videos to local disk before processing, updating environment and performance tuning variables, simplifying the transcoding logic by removing the per-title VMAF complexity probe, and enhancing audio stream metadata handling. Additionally, new audio ABR profiles are introduced.

Video Processing Pipeline Improvements

  • The pipeline now downloads the source video locally before probing and transcoding, improving reliability and consistency across different storage backends. (src/application/video.process.ts [1] [2] [3] [4]

Environment Configuration and Performance Tuning

  • Added new environment variables for FFmpeg and x265 threading, CDN domain configuration, and test video profiles. Updated job lock durations for improved queue stability and made these changes consistent in both .env.example and runtime validation. (.env.example [1] src/config/env.ts [2] [3]

Transcoding Logic Simplification

  • Removed the per-title VMAF complexity probe, setting the complexity multiplier to a constant value, which simplifies and speeds up the transcoding pipeline. The related code and imports have been deleted. (src/infrastructure/ffmpeg/adapter.ts [1] [2] [3]; src/infrastructure/ffmpeg/core/complexity.ts [4]

Audio Stream Metadata and ABR Profiles

  • Audio stream metadata now includes the codec field, and default audio streams are populated with codec information. (src/domain/job.interface.ts [1] src/infrastructure/ffmpeg/core/probe.ts [2]
  • Introduced a new set of audio ABR profiles for stereo, surround, and Dolby Atmos configurations. (src/infrastructure/ffmpeg/encoding/ABR/audio/audio.json src/infrastructure/ffmpeg/encoding/ABR/audio/audio.jsonR1-R47)

Other Codebase Cleanups

These changes collectively enhance pipeline robustness, simplify configuration, and improve support for modern audio profiles.

- include HTTPS in DOMAIN_SUBDOMAIN_NAME in env.example
- remove encoding profiles to introduce new ABR bitrate ladder and multiple versions
…ynamic metadata

- Refactored video and audio profile loading to support ABR (Adaptive Bitrate) configurations.
- Introduced dynamic tier numbering for video profiles and group IDs for audio profiles based on domain configuration.
- Updated video profile filtering logic to allow for developer overrides and improved compatibility checks.
- Enhanced video metadata computation to include aspect ratio and scaling adjustments based on source dimensions.
- Improved audio metadata handling to include Atmos support and dynamic channel configurations.
- Added functionality to fix init segment URLs in HLS manifests to ensure correct CDN paths.
- Updated Azure storage service to support retry logic for file uploads and improved progress reporting.
- Introduced stable rendition IDs for audio tracks and enhanced playlist generation with bitrate formatting.
@maulik-mk maulik-mk merged commit 4fc1d03 into dev Apr 5, 2026
1 check passed
maulik-mk added a commit that referenced this pull request Apr 5, 2026
- For more details PR : #15, #16
@maulik-mk maulik-mk deleted the feat/migrate-vmaf-to-abr-ladder branch April 5, 2026 13:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant