Все кейсы

Пайплайн транскодирования аудио

Серверный пайплайн: загрузка FLAC/MP3/OGG, транскодирование в нужные форматы, стриминг через S3. Lossless воспроизведение в браузере с любого устройства.

NuxtTypeScriptS3Node.js
Пайплайн транскодирования аудио

Задача

Мелотека - облачный музыкальный сервис, загружаешь свою коллекцию и слушаешь откуда угодно.  Люди приносят файлы в разных форматах - от FLAC по 40-60 МБ до MP3 и OGG.  Надо было и оригиналы сохранить, и сделать версии для стриминга в браузере, и чтобы трек начинал играть сразу.  Бюджет стартапа на ранней стадии.

Решение

Я сделал асинхронный пайплайн на Node.js.  Файл при загрузке сразу летит в S3 на Yandex Cloud - оригинал не трогаем.  Параллельно создается задача в очереди, воркер берет файл и прогоняет через ffmpeg: AAC для браузерного стриминга (128/256/320 kbps по тарифу), метаданные, waveform-превью.  Стриминг через presigned URLs - клиент получает прямую ссылку на S3, CDN кеширует популярное.  Lossless отдается через отдельный эндпоинт с Range-запросами.

Результат

Трек обрабатывается в среднем за 15 секунд (FLAC 40 МБ).  Воспроизведение стартует мгновенно благодаря CDN.  Хранение - ~0.5 руб/ГБ в месяц.  Пайплайн тянет до 100 треков параллельно.

188

Похожие кейсы

Миграция платформы на React и NestJS
Переписал ядро o5.Еда с PHP/jQuery на TypeScript/React/NestJS. Модульная архитектура, типизированный API, 500+ бизнес-клиентов без простоя при переходе.
ReactTypeScriptNestJSNode.js
Интеграция каталога MusicBrainz
Подключил каталог MusicBrainz (127 000+ артистов), скробблинг в ListenBrainz, Telegram Mini App для мобильного доступа к библиотеке.
NuxtTypeScriptTelegram Mini App
SEO-архитектура для сайтов доставки
Отдельные страницы товаров с Schema.org разметкой, SSR, мета-теги. Клиентские сайты выходят в топ Google по локальным запросам.
NuxtTypeScriptTailwind CSS
Онлайн-оплата без комиссии для ресторанов
Интеграция прямого эквайринга для клиентов SaaS-платформы доставки еды. 0% комиссии на заказы вместо 3-5% у агрегаторов.
NuxtTypeScriptNode.js

Нужно решить похожую задачу?

Напишите - обсудим ваш проект или идею.

© 2026 Николай Косарев