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

Задача
Мелотека - облачный музыкальный сервис, где пользователь загружает свою коллекцию и слушает с любого устройства. Проблема: люди хранят музыку в разных форматах. Аудиофилы загружают FLAC (40-60 МБ на трек), обычные пользователи - MP3 и OGG. Нужно было решить три задачи одновременно: сохранить оригиналы без потерь, создать оптимизированные копии для стриминга через браузер и обеспечить мгновенный старт воспроизведения без буферизации. При этом всё должно работать на бюджетной инфраструктуре - стартап на ранней стадии, каждый рубль на счету.
Решение
Спроектировал асинхронный пайплайн обработки аудио на Node.js. При загрузке файл сразу отправляется в S3-хранилище на Yandex Cloud - оригинал сохраняется как есть. Параллельно создается задача в очереди на транскодирование. Воркер берет файл, прогоняет через ffmpeg: генерирует AAC-версию для браузерного стриминга (128/256/320 kbps в зависимости от тарифа пользователя), извлекает метаданные (длительность, битрейт, сэмплрейт), создает waveform-превью для визуализации. Готовые файлы заливаются обратно в S3. Стриминг реализован через presigned URLs с ограниченным временем жизни - клиент получает прямую ссылку на S3, CDN кэширует популярные треки. Для lossless воспроизведения отдается оригинальный FLAC через отдельный эндпоинт с поддержкой Range-запросов.
Результат
Среднее время обработки трека - 15 секунд (FLAC 40 МБ). Мгновенный старт воспроизведения благодаря CDN-кэшированию и presigned URLs. Хранение обходится в ~0.5 руб/ГБ в месяц на S3. Пользователи загружают FLAC и получают lossless в браузере без установки отдельного приложения. Пайплайн обрабатывает до 100 треков параллельно благодаря очереди задач.
Похожие кейсы
Нужно решить похожую задачу?