Бенчмарк на Node.js показывает, что производительность пяти популярных сервисов видео-API резко различается в зависимости от размера файла. При ограниченной скорости 4G-соединения (10 Мбит/с) FastPix доминировал в тесте с большими файлами, в то время как Cloudinary вырвался вперед на коротких роликах.

Почему этот тест важен

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

Как проводился бенчмарк

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

  • Время загрузки (Upload time) — количество секунд реального времени, необходимых для передачи необработанных байтов через API.
  • Время до готовности (Time-to-ready) — интервал от начала загрузки до момента, когда видео можно начать стримить (т. е. когда API сообщает, что актив стал доступен для воспроизведения).

Пять сервисов прошли через один и тот же скрипт: FastPix, Mux, api.video, Cloudinary и Gumlet. Все тесты проводились с одной машины, а пропускная способность сети была ограничена до 10 Мбит/с, чтобы имитировать типичный опыт использования мобильного 4G. Использовались два репрезентативных файла:

  • Большой файл: 177 МБ, что примерно соответствует длинному контенту или мастер-файлам высокого разрешения.
  • Малый файл: 65 МБ, типичный для коротких роликов или фрагментов из соцсетей.

Скрипт автоматизировал загрузку, а затем опрашивал эндпоинт статуса каждого провайдера до тех пор, пока видео не переходило в состояние «ready» (готово), фиксируя обе временные метки.

Что показывают цифры

Большой файл (177 МБ)

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

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

  • Cloudinary обработал ролик всего за 2 секунды, обойдя все остальные сервисы.
  • FastPix опустился на пятое место.

Выводы при выборе видео-API

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

Помимо сухих цифр, командам следует учитывать тарифные планы, географическое покрытие CDN и набор функций, таких как варианты транскодирования или DRM. Рейтинг провайдера может помочь для быстрой проверки, но он не должен заменять тестирование на ваших конкретных рабочих нагрузках.

Как провести собственный тест

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

Единственный бенчмарк, который действительно имеет значение, — это тот, который отражает ваши собственные паттерны трафика и ожидания по качеству.

На что обратить внимание в будущем

По мере развития видео-API появляются новые пути загрузки, уровни кэширования на границе (edge) и транскодирование на базе ИИ. Наличие автоматизированного бенчмарка в вашем CI-конвейере поможет выявить регрессии до того, как они затронут пользователей. Результаты, которыми делится сообщество (например, по ссылке ниже), также помогают сформировать более прозрачную картину экосистемы.

Источник: https://dev.to/masonwritescode/benchmark-video-apis-yourself-upload-to-playable-measured-across-five-providers-3ap0