Work / API · 2023
Soundwave Generator
An Adazing media tool: a user uploads an audio clip and a cover image, picks a colour and position, and gets a 1280×720 video with an animated waveform over the image. A Laravel API starts FFmpeg in the background, finds finished renders by polling a status table and emails the download link. I wrote it during my first period at Adazing.
- employer
- api
- client anonymized
- archived
- Client
- Soundwave Generator
- Type
- API · Media processing: audiogram video renderer
- Built with
- PHP, Laravel, FFmpeg, PHPMailer, React
- Also uses
- Next.js, Vue
- Last active
- 2023
What it does
- Upload audio and an image, choose colour and position, get a 1280×720 waveform video.
- JSON variant of the render for a browser upload component (base64 audio and image).
- Background rendering with status polling, email delivery of the download link, and clean-up of delivered files.
How it is built
- Upload-then-poll with no queue: the Laravel API stores the upload, starts FFmpeg detached and returns immediately; a status endpoint polls a database table, builds public URLs for finished renders and emails them; a clean-up endpoint removes delivered files. A separately built Next.js static front end calls the hosted API.
Decisions
- Run FFmpeg detached and deliver by email instead of holding the request open.
- Offer a JSON/base64 endpoint alongside multipart upload for the browser component.
Skills
- Media processing with FFmpeg filter graphs
- Asynchronous job handling in PHP/Laravel
