Сервіс конвертації медіа

Огляд справи

Це хмарний медіасервіс конвертації, який приймає відео- та аудіофайли і перетворює їх у формат HLS зі підтримкою адаптивної швидкості передачі. Система прослуховує чергу SQS для нових файлів, запускає Kubernetes job для кожного з них і створює повний набір плейлістів m3u8 та сегментів .ts, готових для будь-якого сучасного відеопрогравача.


Підтримує кілька роздільних здатностей для відео, кілька рівнів бітрейту для аудіо та обробляє відео з кількома аудіодоріжками — включно з різними мовами або коментарями. Сервіс працює одночасно для кількох проектів і організовує вихідні дані у окремі папки на S3 відповідно до проекту чи видавця.

Мета: Створити повністю автоматизований сервіс, що конвертує будь-який відео- або аудіофайл у формат HLS без ручного втручання — працюючи одночасно на кількох проектах, обробляючи різноманітний контент і масштабуючись до нуля у режимі простою.

Image

Ключова інформація про проект

Індустрії

Індустрії

Медіа та розваги, платформи відеострімінгу, OTT та трансляційні сервіси, цифрове видавництво, мережі доставки контенту — будь-який бізнес, який потребує доставлення відео- або аудіоконтенту кінцевим користувачам на різних пристроях та за різних умов мережі.

Послуги

Послуги

Обробка черги SQS із довгим опитуванням і керування часу видимості, медіатранскодування та аналіз потоків за допомогою FFmpeg та FFprobe, оркестрація завдань Kubernetes з епhemeral об'ємами та узгодженням вузлів, паралельний завантажувальний конвеєр S3 з очисткою перед завантаженням.

Рішення

Рішення

Відео HLS із кількома роздільними здатностями — 1080p, 720p, 480p, 360p, 240p з адаптивним бітрейтом, аудіо HLS з кількома бітрейтовими рівнями — 32, 64, 96, 128, 192 кбіт/с на кожну аудіодоріжку, автоматичне виявлення всіх аудіопотоків з метаданими мов, ескізи на позначці 2 секунди, прев’ю у низькій якості у форматі MP4, копії у форматах MP3 і WAV.

Технології

Технології

AWS SQS, S3, Kubernetes, FFmpeg, FFprobe, H.264, AAC/HE-AAC, HLS/m3u8, NVIDIA NVENC, Intel Quick Sync, EC2 Auto Scaling, Docker, Helm

Виклики

Багато форматів вихідних даних із одного вхідного файлу

Багато форматів вихідних даних із одного вхідного файлу

Один відеофайл може створити сотні файлів — п’ять роздільних здатностей відео, п’ять аудіобітрейтових рівнів на кожну аудіодоріжку, а також ескізи та прев’ю. Потрібно було акуратно організувати це все і швидко завантажити.

Кілька аудіопотоків на відеофайл

Кілька аудіопотоків на відеофайл

Деякі відео мають кілька аудіодоріжок різними мовами. Система мала автоматично виявити їх усі, конвертувати кожну окремо та створити головний плейліст, що посилається на кожен трек із відповідною мовною позначкою.

Надійність черги і логіка повторних спроб

Надійність черги і логіка повторних спроб

З SQS треба правильно обробляти дублікатні повідомлення, тайм-аути видимості і невдалі завдання. Якщо завдання не вдається, повідомлення має повернутися до черги для повтору. Якщо той самий файл поставили в чергу двічі, ми не повинні обробляти його вдруге.

Управління в Kubernetes

Управління в Kubernetes

Кожне завдання конвертації використовує багато CPU та пам’яті. Потрібно було налаштувати ефермерні об’єми, правила узгодження вузлів і правильне очищення, щоб завдання не накопичувалися та не блокували одне одного.

Ізоляція кількох проектів на S3

Ізоляція кількох проектів на S3

Сервіс працює одночасно для кількох проектів. Кожен має власний шлях виводу на S3, і треба було підтримувати як папки, орієнтовані на видавця, так і на серії без порушень.

Автоматичний вибір кодека

Автоматичний вибір кодека

Не кожна машина має апаратне прискорення GPU. Система мала визначати, які кодеки доступні — NVIDIA, Intel Quick Sync, AMD чи просто програмні — і автоматично вибирати найкращий.

Процес

Увесь конвеєр працює без участі людини — від моменту, коли файл з’являється на S3, до готового виходу HLS, готового до відтворення. Кожен крок плавно передає керування наступному, з вбудованими захисними механізмами від збоїв, дублікатів та конфліктів ресурсів. Нижче описано, як система обробляє файл через повний цикл конвертації.

Опитування черги

Опитування черги

Менеджер завдань працює в Kubernetes і опитує чергу SQS з довгим опитуванням. Коли приходить повідомлення, воно парсить бакет S3 і ключ об’єкта, щоб ідентифікувати вихідний файл.

Запобігання дублюванню

Запобігання дублюванню

Перед створенням нового завдання менеджер перевіряє існування Kubernetes job для того самого файлу. Якщо знайдено, повідомлення повторно ставиться в чергу з затримкою, щоб запобігти подвійній обробці.

Створення завдання Kubernetes

Створення завдання Kubernetes

Створюється новий под із шаблону з правильними обмеженнями ресурсів, узгодженням вузлів для ARM-платформ і ефермерними об’ємами для тимчасових файлів, вхідних, вихідних і логів.

Конвертація відео й аудіо

Конвертація відео й аудіо

FFmpeg конвертує відео у п’ять роздільних здатностей HLS (1080p→240p) із сегментами по 4 секунди. Кожна аудіодоріжка виявляється і конвертується у п’ять рівнів бітрейту — від 32 до 192 кбіт/с.

Генерація головного плейліста

Генерація головного плейліста

Один файл m3u8 master посилається на всі роздільні здатності відео і аудіодоріжки з метаданими мов — дозволяючи адаптивний стрімінг і перемикання мов у будь-якому сучасному плеєрі.

Завантаження, очищення та автоскейлінг

Завантаження, очищення та автоскейлінг

Всі файли паралельно завантажуються на S3 через пул із 500 потоків. Старі сегменти HLS очищуються перед надходженням нового набору. Автоскейлер масштабує вузли до нуля, коли черга спорожняється.

Рішення

Ключові особливості рішення

  • Відео з адаптивним бітрейтом - 5 рівнів — 240p (300 кбіт/с) → 1080p (5000 кбіт/с) в одному плейлісті. Автоматичний вибір якості на основі швидкості з’єднання.

  • Аудіо з кількома доріжками з позначками мов — Виявляє та конвертує всі аудіодоріжки, включно з коментарями та описами, зберігаючи метадані мов.

  • Автоматичне визначення кодека — Використовує апаратне прискорення NVIDIA / Intel / AMD або програмне відновлення, якщо GPU відсутній.

  • Автоматичне масштабування без зайвих витрат — Вузли EC2 масштабуються до нуля, коли черга порожня. Активні завдання захищені від передчасного завершення.

  • Ізоляція багато проектів у S3 — Кожен проект має власний шлях вихідних даних у S3. Підтримує структури папок як видавця, так і серії.


Image

Результати у цифрах

Охоплення якості відео

1080p

П’ять рівнів адаптивної бітрейтової швидкості від 240p при 300 кбіт/с до повного HD 1080p при 5000 кбіт/с — плеєр автоматично перемикає якість відповідно до швидкості з’єднання.

Паралельні потоки завантаження

500x

Сотні вихідних файлів — сегменти, плейлисти, мініатюри, попередні перегляди — одночасно завантажуються в S3 через пул потоків, мінімізуючи час доставки.

Тривалість сегментів HLS

4сек

4-секундні сегменти HLS збалансовують швидкість адаптивного перемикання із ефективністю буферизації — плеєр реагує на зміни мережі в межах одного сегменту.

Рівні аудіобітрейта для кожної доріжки

5x

Кожна аудіодоріжка — включно з коментарями та описом — має до п’яти рівнів якості від 32 кбіт/с (HE-AAC) до 192 кбіт/с (LC-AAC) із нормалізацією гучності.

Створіть масштабований медіапайплайн для вашої платформи!

Отримайте повністю автоматизовану систему конвертації HLS, що масштабується разом із вашим контентом — і ми допоможемо знайти оптимальну архітектуру для вашого проекту.

Message not sent.
Message not sent.
×
Не знаєте, з чого почати? Ми допоможемо вам окреслити наступні кроки!
Згода на обробку персональних даних
×
Є виклик? Наша команда перетворить його на рішення.
Згода на обробку персональних даних