Services
Custom software developmentUmbraco developmentWeb developmentCRM developmentERP developmentAI & LLM integration.NET development & modernizationE-commerce developmentIntegrations & automationCloud & DevOpsMaintenance, support & project rescueDedicated teams & white-label
Our Work
Case studiesProducts
About Blog Contact
Video & audio processing

Video and audio processing pipelines that scale with the queue.

We build the back end of media products: transcoding to adaptive HLS, audio tracks per language, transcripts and subtitles. Jobs run on Kubernetes, grow when uploads arrive and shrink to zero when the queue is empty.

Where media pipelines break

Three problems that grow with every upload.

Media work is heavy, uneven and fans out fast. A script on one server handles a few files. A catalog or an archive needs a pipeline.

Cost

Paying for machines that wait

Sounds familiar if: Uploads arrive unevenly, each conversion needs a lot of CPU and memory, and large servers sit idle between batches.

A queue-driven service that adds nodes as jobs arrive and removes them all when the queue is empty.

$0 compute while idle
Outputs

One file, hundreds of outputs

Sounds familiar if: Every upload has to become several resolutions, separate audio per language, thumbnails and a preview, all listed correctly for the player.

One encode that produces every rendition and a master playlist that links all video and audio variants.

5 video, 5 audio tiers
Speech

Long, mixed-language recordings

Sounds familiar if: Recordings run an hour or more, speakers switch languages mid-sentence, and hundreds of parallel jobs hit API rate limits.

Recordings split at natural pauses, transcribed in parallel, merged into one timeline and cleaned up per language.

99% precision
What we build

From raw upload to stream, transcript and subtitle.

Each item links to the project where we built it.

Adaptive HLS transcoding

Raw uploads turned into HLS streams in several resolutions, so players switch quality as the viewer’s connection changes.

  • 5 tiers, 240p at 300 kbps to 1080p at 5000 kbps
  • 4-second segments
  • H.264 / H.265 with FFmpeg
See it in Cloud media pipeline · AWS and Kubernetes

Multi-language audio tracks

Every audio stream detected, tagged with its language and encoded to its own bitrate ladder, so viewers can pick the language they want.

  • 5 bitrate tiers per track, 32–192 kbps
  • Two tiers for commentary tracks
  • AAC (HE/LC)
See it in Cloud media pipeline · master m3u8 per file

Queue-driven job orchestration

A job manager reads S3 upload events from SQS and gives each heavy job its own Kubernetes pod with set limits, then cleans up after it.

  • Duplicate messages sent back with a delay
  • Ephemeral volumes per job
  • Node affinity for ARM instances
See it in Cloud media pipeline · scales to zero

Transcription and subtitles

Timed transcripts with speaker labels, subtitles and summaries from audio-only files and video containers through one path.

  • Recordings over 20 minutes split at silences
  • Chunks merged with corrected offsets
  • 99% subtitle timestamp accuracy
See it in AI transcription pipeline · Gemini on Vertex AI

AI cost control by model routing

Each chunk goes to the model tier that fits its length, so short and simple work does not pay the price of the largest model.

  • Gemini Pro or Flash chosen by length
  • Flash-Lite also available
  • Up to 60% lower AI and API cost
See it in AI transcription pipeline · dynamic model selection

Streaming products around the media

The product layer listeners touch: one account across the marketing site and the streaming app, and one API for news, comments and likes.

  • Single Auth0 login for site and app
  • One shared backend and API
  • CMS-driven event banners
See it in Disctopia · music streaming platform
Transcoding story

A transcoding pipeline that costs nothing while the queue is empty.

A media streaming business publishes video for several projects and publishers. Each raw file dropped into S3 must come out with several resolutions, separate audio per language, thumbnails and a preview. Uploads arrive unevenly, so large machines around the clock made no sense.

  • A job manager long-polls SQS and gives each job a dedicated pod with resource limits and ephemeral volumes.
  • FFmpeg picks the best available encoder across NVIDIA, Intel Quick Sync and AMD, with a software fallback.
  • Output goes to a separate S3 location for each project or publisher.
  • Up to 5 concurrent jobs run on up to 3 dedicated autoscaled nodes.
Read the transcoding case
Results
5
video tiers, 240p to 1080p
5
audio tiers per track, 32–192 kbps
500
parallel S3 upload threads, at most
$0
compute cost with no jobs waiting
AWS SQSAWS S3KubernetesHelmFFmpegH.264 / H.265AAC
99%

transcription precision on Hebrew and Aramaic lectures, with English mixed in.

99%

subtitle timestamp accuracy, even when long recordings are split and merged again.

300+

transcription jobs running at the same time under queue management.

Up to 60%

lower AI and API cost through dynamic model selection.

Transcription story

Hours of mixed-language lectures, turned into searchable media.

An educational lecture archive holds recordings that often run an hour or longer. Speakers move between Hebrew, Aramaic and English in the same sentence, and the text needs diacritics and correct references to sources.

The pipeline probes each file, splits long recordings at pauses, transcribes the chunks with Gemini into a structured schema with timestamps and speaker labels, and merges them back into one timeline. A parallel module builds multi-bitrate HLS streams, thumbnails and previews. It runs on Kubernetes with retries and adaptive backoff.

PythonFastAPIGoogle Vertex AIGeminiFFmpegKubernetesHelm
Read the transcription case How we transcribe long audio with Gemini
How a file moves through the pipeline

Six stages, from upload to scale-down.

Both pipelines on this page follow the same shape: inspect the file, queue the work, process it in isolated jobs, put the results back together, deliver them and release the compute.

Related services: cloud and DevOps for Kubernetes, queues and autoscaling, and AI development for transcription, summaries and model routing.

FFmpegFFprobeKubernetesHelmDockerAWS SQSAWS S3Google Cloud StorageVertex AIPythonCI/CD
  1. Probe the file

    FFprobe checks every upload. Audio is extracted from video containers, and every audio stream is detected and tagged with its language.

  2. Queue the job

    Upload events land in a queue. If the same file is already in progress, the message goes back with a delay, so nothing is processed twice.

  3. Split and process

    Each heavy job gets its own pod. Long recordings are split at natural pauses, and video is encoded to every rendition in one pass.

  4. Merge and clean up

    Transcript chunks are joined into one timeline with corrected offsets. Language-aware post-processing tidies the text.

  5. Deliver

    Segments, playlists, subtitles, thumbnails and previews go to cloud storage in parallel, in a separate location per project or publisher.

  6. Scale down

    When the queue is empty, the autoscaler removes the processing nodes. Compute cost drops to zero until the next upload.

Video & audio FAQ

Media processing questions we hear most.

Anything missing? Send us your question and an engineer will answer, usually within one business day.

Contact us
What does your transcoding pipeline produce from one upload?+

In the pipeline we built for a media streaming business, each raw video becomes HLS streams in five resolutions from 240p at 300 kbps to 1080p at 5000 kbps, with 4-second segments. Every audio track is encoded to five bitrate tiers between 32 and 192 kbps, and a master playlist links all video and audio variants. Thumbnails and a short low-resolution preview are produced too.

How do you keep processing costs down?+

Two ways. For transcoding, the service runs on Kubernetes nodes that the autoscaler adds as the queue grows and removes when it is empty, so idle compute costs nothing. For AI transcription, each chunk is sent to the Gemini model tier that fits its length, which cut AI and API costs by up to 60%.

Do we need GPU servers?+

Not necessarily. The encoder is chosen automatically across NVIDIA, Intel Quick Sync and AMD hardware, with a software fallback, so the same pipeline runs on whatever nodes are available.

How do you handle duplicate or failed jobs?+

The transcoding job manager handles SQS duplicates, visibility timeouts and retries for failed jobs without double processing. The transcription pipeline uses retries with adaptive backoff for API rate limits, and work re-syncs automatically when a connection drops, so no data is lost.

Can you transcribe long, multilingual recordings?+

Yes. For an educational lecture archive where Hebrew, Aramaic and English are mixed in one recording, we reached 99% transcription precision and 99% subtitle timestamp accuracy across split recordings, with more than 300 jobs running at the same time. Our blog post on Gemini transcription explains the approach.

Which clouds do you use for media pipelines?+

The transcoding service runs on AWS with SQS and S3. The transcription pipeline uses Google Vertex AI with storage on AWS S3 and Google Cloud Storage. Both run on Kubernetes, deployed with Helm and Docker through CI/CD.

Who owns the code and the infrastructure?+

You do. Code, cloud accounts, queues and storage are yours, with full IP assignment in the contract. We charge for the work, not per minute of media processed.

Start a project

Tell us what you upload and what has to come out. We will sketch the pipeline and what it costs to run.

A spec, a Figma file or three paragraphs is enough to start.

  1. First reply · from an engineer, not a sales rep
  2. 30-min call · with Roman, our CTO, to clarify scope
  3. After the call · a written proposal with plan, team and price
Roman Oleksuk
Roman Oleksuk, CTOPrefer to talk? Pick a slot in Roman's calendar
We reply from a human mailbox. No newsletters. Your brief stays under NDA on request. We use your details only to reply; see our privacy policy.