Tutorial · Python ยท ~10 min
Convert an SDR Video Library to HDR (OTT)
A practical playbook for catalog remastering: what to convert first, how to QC, and how to keep the rollout automated.
Why this matters
Streaming platforms increasingly label HDR as a quality differentiator. A legacy catalog stuck in SDR ages fast next to HDR-native originals.
Catalog remastering is a volume problem โ hundreds of titles, each needing the same careful treatment. That is exactly what a queue-driven API solves.
How it works
Tier the catalog (flagship titles first), assign presets per content type, run smoke batches per tier, and QC with HDR waveforms before sign-off.
Submit a job with an input URL (S3, GCS or HTTPS), poll the job URL, and download the rendered output. No GPU, no queues, no ffmpeg builds to babysit.
Code
import requests, time
API = "https://api.mlslabs.io/v1/sdr2hdr/jobs"
headers = {"X-API-Key": "YOUR_API_KEY"}
payload = {"input": "s3://bucket/archive/", "preset": "cinema", "pattern": "*.mov", "bit_depth": 10}
resp = requests.post(API, json=payload, headers=headers)
job = resp.json()
while job["status"] not in ("succeeded", "failed"):
time.sleep(3)
job = requests.get(job["url"], headers=headers).json()
print("Output:", job["output_url"])Pro tips
- Start with drama and documentary โ cinema preset benefits them most.
- QC a sample of every 10th title, not just the first episode.
- Automate delivery: after each batch, trigger your transcoding pipeline on the HDR outputs.
Pricing note
Usage is metered per minute of media processed; the first tier is free each month. Volume discounts kick in automatically.
FAQ
Common questions
What is the realistic throughput?
Throughput scales with concurrency. A typical catalog of 500 episodes converts in days, not months, at default limits.
Do I need a colorist in the loop?
For automatic presets, no. For hero titles, you can still pull the master into a grading session afterwards.
Is HDR delivery compatible with my CDN?
HDR10 HEVC streams on any CDN; add the HDR metadata and the right codec parameters at encode time.
Keep exploring