Queued audio normalization and encoding.
Prepare audio without holding up the user experience.
Where this work fits
Uploaded audio still needed preparation: its format and loudness had to suit playback, and some messages needed silence around them. That work took time and depended on tools beyond the application runtime.
I built an SQS-backed audio processing flow using NestJS and FFmpeg. A worker prepared and encoded the file, stored the result in S3, and recorded processing outcomes. Temporary files were cleaned up, including after a processing failure.
Move media preparation into background work
Uploading a file is only the first step. It waits for a worker, goes through audio preparation, and becomes available to play once processing finishes.
Background work needs a visible outcome.
Moving processing into a queue let the request finish sooner, but the file was not ready yet. I handled processing and failure states and temporary-file cleanup. Compatibility work also had to refresh cached files and metadata so older players received the updated audio.
The skills behind the work
- Amazon SQS
- Queue work so processing can happen independently of the request that started it.
- FFmpeg
- Prepare audio through encoding, filtering, and loudness-processing capabilities.
- NestJS
- Organize backend endpoints, validation, and services around product responsibilities.
Audio preparation became an automated background operation. Content could be normalized and encoded without holding the original request open, with status available when processing failed.
- Venues supported
- 3,000+Scale served by the automated track-processing pipeline.