Выбор API для прямых трансляций: что проверить, прежде чем строить
Что разработчику стоит сравнить в видео-API для прямых эфиров и видео по запросу: от тарификации и приёма потока до встраивания и работы, которая остаётся на вашей стороне.

On this page
Выбор видеобэкенда кажется сравнением функций, но на деле это ближе к найму поставщика для той части продукта, которую ваши клиенты действительно смотрят. API прямых трансляций затрагивает загрузку, кодирование, доставку и воспроизведение, поэтому неудачный выбор проявляется в обращениях в поддержку, неожиданном счёте или переписывании кода. В этом руководстве описана короткая процедура сравнения поставщиков, независимо от того, выбираете ли вы между управляемым API и собственным конвейером или ищете альтернативу тому, чем пользуетесь сегодня. Каждую из проверок ниже можно выполнить за один день на тестовом аккаунте, и каждая расскажет то, чего не расскажет маркетинговая страница.
Начните с задач, которые должен решать ваш продукт
Запишите задачи, прежде чем откроете хотя бы одну страницу поставщика. Типичный список выглядит так: принять загрузку, превратить её во что-то воспроизводимое, выйти в прямой эфир из энкодера, показать результат на собственной странице и ограничить круг зрителей. Если вы продаёте доступ, добавьте в список оплату и выдачу прав. Каждая строка становится тестом, который можно выполнить, и каждый тест заканчивается понятным результатом «прошёл» или «не прошёл», не зависящим от формулировок на странице функций.
Затем оценивайте каждый API по этому списку, а не по его странице функций. Страница функций перечисляет то, чем гордится поставщик, а ваш список описывает то, что вы обязаны выпустить. Отметьте каждую задачу как закрытую через API, закрытую только в панели управления или не закрытую. Задача, существующая только в панели управления, заставляет человека проходить по экрану при каждом подключении клиента, поэтому для любого продукта, который вырастет за пределы нескольких аккаунтов, считайте это пробелом.
Спросите, как тарифицируется использование
Форма тарификации важнее любой отдельной ставки. Оплата за минуты или трафик даёт счёт, который следует за вашей аудиторией, поэтому популярная трансляция увеличивает сумму в тот же день, когда увеличивает ваши часы просмотра. Фиксированный тариф даёт число, под которое можно планировать, но обычно сопровождается ограничениями на хранилище, число одновременных трансляций или качество, и эти ограничения нужно читать так же внимательно.
Посчитайте на своём трафике, а не на примере со страницы. Возьмите ожидаемые месячные часы просмотра, пессимистичный всплеск, который намного больше, и объём видео, который вы рассчитываете хранить, и прогоните всё это через каждую модель тарификации. Если счёт по факту использования приемлем только в спокойном сценарии, вы узнали, что ваша маржа зависит от удачи. Если фиксированная модель подходит для всплеска, но выглядит избыточной в тихий месяц, вы узнали, что резервируете мощность, которой можете не пользоваться, а это справедливый обмен только тогда, когда для вас важна предсказуемость.
Проверьте, что API покрывает весь путь
Ищите покрытие всего пути от загрузки до готового плеера. Сборка загрузчика, транскодера и плеера от разных поставщиков умножает количество мест, где что-то может сломаться, а также количество панелей управления, ключей и счетов, которые вам придётся вести. У каждого стыка свой режим отказа: загрузчик сообщает об успехе, а транскодер отклоняет кодек, или плеер загружает манифест, до которого доставка ещё не дошла.
Единый API не обязательно лучше, поэтому проверьте стыки, за которые вы будете отвечать в любом случае. Загрузите файл с необычным контейнером, вертикальный ролик с телефона и очень длинную запись и посмотрите, что вернётся в каждом случае. Если поставщик справляется и возвращает понятный статус, ваша интеграция останется небольшой. Если вам приходится добавлять код конвертации или собственную логику повторных попыток вокруг поставщика, считайте этот код частью реальных затрат на его выбор.
Изучите ответы и проверьте поток статусов
Прежде чем писать код интеграции, изучите, что API возвращает для новой загрузки и для новой трансляции. Для загрузки в ответе нужны адрес загрузки, адрес статуса и готовый код встраивания без каких-либо ручных действий. Для трансляции нужны адрес публикации, ключ трансляции и код плеера. Если для чего-то из этого человеку нужно открыть панель управления, в вашей автоматизации есть дыра.
Затем проверьте поток статусов на реальном файле: от загрузки через обработку до готовности. Не полагайтесь на пример из документации. Отправьте файл такого размера, какой будут отправлять ваши пользователи, опрашивайте адрес статуса и фиксируйте, сколько длится каждое состояние. Вы узнаете, сообщается ли ход обработки, возвращает ли неудавшийся файл причину, которую можно показать пользователю, и как ведёт себя статус, если запросить его до завершения загрузки.
Обработайте ожидание, сбой и повторную попытку в собственном коде. Ожидание означает, что на странице показывается заглушка вместо сломанного плеера. Сбой означает видимое сообщение и возможность начать заново. Повторная попытка означает, что запрос на загрузку можно безопасно повторить, не оставив после себя наполовину зарезервированное место в хранилище. Напишите по одному тесту на каждое состояние, включая намеренно повреждённый файл, потому что именно с таким случаем столкнётся ваш первый реальный клиент.
Защитите секреты и ограничьте, где можно встраивать видео
Относитесь к адресу публикации и ключу трансляции как к секретам и создавайте их на сервере, а не на странице в браузере. Любой, у кого есть ключ трансляции, может публиковать поток в ваш канал, а всё, что отправлено в браузер, может прочитать посетитель, открывший инструменты разработчика. То же правило относится и к самому ключу API: храните его на сервере, обращайтесь к поставщику из бэкенда и передавайте браузеру только то, что нужно для воспроизведения.
Посмотрите, как встраивается плеер и как ограничивается доступ, потому что видео, которое может встроить любой сайт, не подходит платному продукту. Если ваш контент продаётся, скопированный код встраивания на другом сайте даёт зрителям способ обойти вашу оплату. Спросите, можно ли ограничить плеер списком доменов, распространяется ли этот список также на прямые трансляции и чат и что происходит, когда список невозможно прочитать. Безопасная система в этом случае отказывает во встраивании. Если ваша цель — охват, правильной будет противоположная настройка, поэтому определите, какой у вас случай, прежде чем начинать сравнение.
Выясните, какие лимиты относятся к аккаунту
Лимиты часто прячутся за словом «ключ». Выясните, какие лимиты относятся к аккаунту, а не к ключу, например число одновременных трансляций и объём хранилища, чтобы успешный запуск не упёрся в стену в первый же день. Если вы создаёте отдельный ключ для каждого клиента или окружения, лимит уровня аккаунта делится между всеми ними, и ваши тесты на стейджинге могут израсходовать ресурс, нужный рабочему трафику.
Проверьте, что одна и та же подписка обслуживает и панель управления, и API. Отдельный корпоративный тариф для программного доступа может добавить месяцы к небольшому проекту, потому что превращает техническое решение в разговор с отделом продаж. Спросите напрямую, входят ли доступ к API и нужные вам средства управления встраиванием в тариф, который вы собираетесь купить, и получите ответ в письменном виде, чтобы не обнаружить преграду после завершения интеграции.
Следите за поставщиком и продумайте выход
Заведите небольшой тестовый аккаунт и скрипт, который каждый день создаёт, воспроизводит и удаляет видео, чтобы изменение у поставщика обнаруживалось раньше, чем его увидят ваши клиенты. Скрипт должен делать реальную работу: запросить загрузку, отправить небольшой файл, дождаться готовности, получить код плеера, загрузить его в headless-браузере, убедиться, что кадры воспроизводятся, а затем удалить видео. Настройте оповещение на любой шаг, который не удался или занял гораздо больше времени обычного, и храните результаты в журнале, чтобы вы могли точно сообщить поддержке, когда изменилось поведение.
Продумайте выход заранее: храните собственную копию оригиналов и собственную запись идентификаторов видео, благодаря чему последующая смена поставщика станет миграцией, а не переписыванием. Храните исходную загрузку в собственном хранилище и ведите таблицу, сопоставляющую ваш внутренний идентификатор видео с идентификатором поставщика. Используйте свои идентификаторы на страницах и в ссылках, чтобы идентификаторы поставщика знал только слой интеграции. Именно такое разделение делает привязку к поставщику управляемым риском, а не причиной вообще отказаться от покупки.
Прежде чем принять решение, пройдите чек-лист ещё раз как репетицию. Можете ли вы описать на одной странице каждую задачу, счёт в месяц со всплеском, поток статусов, секреты, лимиты аккаунта, ежедневную проверку и выход? Если можете, вы готовы строить. Если нет, недостающая строка и есть вопрос, который нужно задать поставщику следующим.
Документация API по этой теме
dcast Team
Профессионалы видеостриминга, которые помогают авторам добиваться успеха.
Похожие статьи
Начните свой видеобизнес сегодня
Загружайте, вещайте и продавайте видео. Начните на бесплатном тарифе — без карты.
Начать бесплатно


