Бенчмарк на Node.js показує, що продуктивність п'яти популярних відео-API сервісів суттєво різниться залежно від розміру файлу. На обмеженому з'єднанні 4G (10 Мбіт/с) FastPix домінував у тесті з великими файлами, тоді як Cloudinary випередив усіх на коротких роликах.

Чому цей тест важливий

Постачальники відео-API постійно заявляють про «найшвидше завантаження» або «миттєве відтворення» на своїх маркетингових сторінках. Такі твердження зазвичай базуються на ретельно підібраних тестових файлах, які відповідають оптимальним умовам роботи кожного провайдера. Коли продуктова команда приймає рішення про вибір вендора на основі таких заголовків, вони ризикують отримати невідповідність між заявленою та реальною затримкою, особливо якщо їхні користувачі завантажують контент різного розміру або при різній якості мережі.

Як було створено бенчмарк

Автор написав простий тестовий фреймворк на Node.js, який вимірює два показники для кожного завантаження:

  • Час завантаження — фактичний час у секундах, необхідний для передачі сирих байтів до API.
  • Час до готовності (Time-to-ready) — інтервал від початку завантаження до моменту, коли відео можна почати стрімити (тобто коли API повідомляє, що актив готовий до відтворення).

П'ять сервісів пройшли через один і той самий скрипт: FastPix, Mux, api.video, Cloudinary та Gumlet. Усі тести проводилися з однієї машини, а швидкість мережі була обмежена до 10 Мбіт/с, щоб імітувати типовий досвід використання мобільного 4G. Було використано два репрезентативні файли:

  • Великий файл: 177 МБ, що приблизно відповідає довгоформатному контенту або майстер-файлам високої роздільної здатності.
  • Малий файл: 65 МБ, типовий для коротких роликів або фрагментів для соцмереж.

Тестовий фреймворк автоматизував завантаження, а потім опитував endpoint статусу кожного провайдера, доки відео не переходило в стан «ready», фіксуючи обидві часові мітки.

Що показують цифри

Великий файл (177 МБ)

  • FastPix показав найменший час завантаження та найшвидший загальний час до готовності, що робить його явним лідером для масової передачі даних.
  • Mux забезпечив найшвидший «холодний старт», тобто перший кадр з'явився швидше після того, як відео було позначено як готове.

Малий файл (65 МБ)

  • Cloudinary обробив ролик лише за 2 секунди, випередивши всі інші сервіси.
  • FastPix опустився на п'яте місце.

На що це впливає при виборі відео-API

  • Завантаження довгоформатного контенту або відео високої роздільної здатності — надавайте перевагу сервісам, які демонструють високу пропускну здатність і швидкість прийому даних. У цьому тесті надійнішим вибором є FastPix.
  • Короткі ролики за запитом — обирайте API, які мінімізують затримку при «холодному старті». Час обробки у 2 секунди у Cloudinary свідчить про те, що він підходить для сценаріїв миттєвого відтворення.

Окрім сухих цифр, командам слід зважити рівні цін, географічне покриття CDN та набори функцій, таких як параметри транскодування або DRM. Рейтинг провайдера може допомогти для швидкої перевірки, але він не має замінювати тестування на конкретних робочих навантаженнях.

Як провести власний тест

  1. Напишіть скрипт для процесу — використовуйте мову, якій ви довіряєте (Node.js, Python тощо), щоб завантажити файл і опитувати endpoint статусу, доки не з'явиться прапорець «ready».
  2. Контролюйте середовище — запускайте тест кожного провайдера з однієї машини та однієї мережі, щоб усунути випадкові фактори.
  3. Обмежте пропускну здатність — встановіть ліміт з'єднання, щоб він відповідав найповільнішому сегменту користувачів, якого ви очікуєте (наприклад, 10 Мбіт/с для 4G).
  4. Використовуйте реальні активи — замініть типові тестові ролики відеоматеріалами, що відображають типові завантаження вашого продукту; кодек, роздільна здатність і бітрейт можуть впливати на конвеєри прийому даних.

Єдиний бенчмарк, який справді має значення, — це той, що відображає ваші власні патерни трафіку та очікування щодо якості.

На що звернути увагу далі

Оскільки відео-API розвиваються, вони впроваджують нові шляхи прийому даних, рівні кешування на периферії (edge caching) та транскодування на основі ШІ. Наявність автоматизованого бенчмарка у вашому CI-конвеєрі допоможе виявити регресії до того, як вони вплинуть на користувачів. Результати, якими ділиться спільнота (як-от наведені нижче), також допомагають сформувати прозорішу картину екосистеми.

Джерело: https://dev.to/masonwritescode/benchmark-video-apis-yourself-upload-to-playable-measured-across-five-providers-3ap0