julianrubisch

julianrubisch

Hi all!

I built audioproxy because every project I touched that used user submitted audio ended up needing variants (previews, downloads, waveform data, …), and rather than prerendering them, storing them in a database entry and
running the job queue that requires, I wanted a solution that is totally agnostic of where the audio is stored (locally or in a bucket), where it is delivered, and in what format.

In short: the URL is the entire API.

GET /{signature}/f:opus/br:96/t:0:30/fade:1:1/plain/s3://masters/track.wav

renders a signed 30-second Opus preview on demand - critically, it streams the first bytes while ffmpeg is still encoding - and because a URL fully describes its variant, every later request is served range-capable from the variant store, and CDNs can cache it as immutable.

The Elixir side is deliberately boring OTP:

• ffmpeg as a supervised subprocess (Port, argv lists only, no shell)
• presigned-URL inputs, so source bytes never cross the BEAM
• render coalescing via Registry: N concurrent requests for one variant share a single encode
• counting semaphore for backpressure (429 with Retry-After)
• Plug + Bandit

One Debian container, no database.

Waveform data ( f:peaks ) is just another output format, audiowaveform-compatible, cached exactly like audio.

The explorer on the landing page runs against a real deployment: the waveform you see is the proxy’s own peaks output, and the cache badge shows real MISS/HIT timings (first render vs. ~30 ms from the store).

Feedback very welcome, especially on the OTP shape and anything that looks un-idiomatic!

Docs: https://docs.audioproxy.dev
Live demo (runs against a real deployment): https://audioproxy.dev
Hex: audio_proxy | Hex

Where Next? Top

Trending in Announcing Top

wojtekmach
Hey everyone! Req is an HTTP client for Elixir that I’ve been working on for quite some time. There is already a lot of HTTP clients out...
New
handnot2
Samly can be used to enable SAML 2.0 Single Sign On in a Plug/Phoenix application. This library uses Erlang esaml to provide plug enabl...
New
woylie
Flop is an Elixir library that applies filtering, ordering and pagination parameters to your Ecto queries. offset-based pagination with...
New
restlessronin
The repo is at GitHub - cyberchitta/openai_ex: Community maintained Elixir library for OpenAI API · GitHub. Docs are at OpenaiEx User Gu...
152 11030 135
New
shahryarjb
The Chelekom project is a library of Phoenix and LiveView components generated via Mix tasks to fit developer needs seamlessly. One of i...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
woylie
Phoenix components for pagination, sortable tables and filter forms with Flop and (optionally) Ecto. pagination cursor pagination sorta...
New

Other Trending Topics Top

mudasobwa
I am seeing a lot of aplications of Argumentum ad Vericundiam in software discussions. They do link some piece of writing and point us to...
New
bartblast
Hey folks, I just published a post about Hologram’s funding and where the project goes next - the short version: Curiosum as Main Spons...
New
alexslade
Fly’s CEO posted this recently - Turn And Face The Strange · The Fly Blog It says that Fly is going all-in on sprites, which is a worry ...
New
Herve37
We’re evaluating API mocking tools for OpenAPI-based projects and would love to hear what other teams are using. We’re particularly inte...
New
sorenone
Today we’re releasing Oban for Python. Not an Oban client in Python. Not a pythonx wrapper embedded in Elixir. Nope, it’s a fully operati...
New
lawik
I was thinking since Goatmire Elixir turned out pretty good I should maybe do another one. 30th of Sep - 2nd of Oct this year./ The firs...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews