Cloudflare запустила проект Streamline как экспериментальную среду и пример с открытым исходным кодом для создания специализированных конвейеров обработки видео на своей платформе для разработчиков. Проект ориентирован на случаи, когда готовых функций Cloudflare Stream недостаточно, например для добавления динамических наложений к прямой трансляции или создания версии размещённого видео со встроенными в изображение субтитрами.
Streamline распределяет роли между несколькими компонентами платформы Cloudflare. Containers отвечают за длительную работу медиадвижка с предсказуемыми ресурсами CPU и памяти, а Durable Objects управляют координацией сеансов, жизненным циклом контейнеров и передачей предварительного просмотра. Workers обрабатывают управляющие сигналы, мониторинг и интерфейс приложения, которым может быть браузерное приложение, программный агент или встроенная система.
Что Streamline предлагает на практике?
Приложение может создать сеанс обработки, запустить видеоконвейер, отправлять в него входные данные, отслеживать метрики, а затем остановить его. Процесс продолжается после отключения управляющего приложения или его повторного подключения, пока приложение не остановит его либо пока не будет достигнута максимальная продолжительность, предотвращающая бесконечное существование сеанса.
В Container размещается медиадвижок, состоящий из управляющего слоя, написанного на Go, и медиапроцессора, который в текущей реализации использует FFmpeg. Движок может принимать поток RTMPS, читать размещённое видео через HLS из Cloudflare Stream или получать данные в реальном времени из такого источника, как веб-камера. Он также может отправлять результат в Stream Live через RTMPS или предоставлять предварительный просмотр с малой задержкой через WebSocket.
Поддерживаемые операции изменения
- Применение фильтров, таких как размытие и насыщенность.
- Добавление статичного изображения или обновляемого во время работы PNG-слоя.
- Встраивание субтитров в видео.
- Настройка параметров кодирования, включая кодек, битрейт, разрешение и частоту кадров.
Cloudflare приводит варианты использования, включая изменение прямой трансляции путём добавления графического слоя, преобразование размещённого видео в версию с субтитрами и отправку кадров с камер в конвейер обработки, который можно использовать для предварительного просмотра или анализа видео. Проект также содержит пример приложения, созданного с использованием Worker и интерфейса Astro, с функциями для слоёв, субтитров, фильтров и режима «картинка в картинке».
Безопасность и жизненный цикл сеанса
Cloudflare разработала модель таким образом, чтобы ключи входных и выходных данных Stream Live не отображались управляющему приложению и не хранились в браузере; они сохраняются в секретах Workers или в хранилище Durable Objects, а приложение обращается к именованным профилям вместо прямой работы с ключами. Worker также проверяет сеанс Cloudflare Access и связывает активный сеанс с авторизованной личностью, при этом в описанном развёртывании разрешён один сеанс.
Компания предупреждает, что представленная модель частного развёртывания не является готовой моделью для общедоступного многопользовательского сервиса. Публичная экспериментальная версия использует отдельную идентичность контейнера для каждого аутентифицированного пользователя, один активный сеанс на пользователя, а также ограничения для параллелизма, медиаданных и ресурсов.
Что это означает для разработчиков?
Streamline предоставляет гибкий слой между управляемым видеосервисом и специализированной обработкой, вместо того чтобы заставлять разработчика полностью создавать операционную инфраструктуру за пределами платформы. Однако ограничения модели важны: текущая обработка зависит от CPU контейнеров, что может стать узким местом при использовании высоких разрешений или частот кадров. Cloudflare говорит, что будущие направления включают конвейеры компьютерного зрения, обработку медиаданных с аппаратным ускорением и поддержку WebRTC и MoQ, а также нативные примитивы кодирования и декодирования внутри Workers.
Cloudflare выпустила два репозитория с открытым исходным кодом: cloudflare/streamline для медиадвижка и пакетов API и cloudflare/streamline-demo для Worker-приложения, интерфейса Astro, инструментов развёртывания и интеграции с Access. Компания также предоставила публичную экспериментальную версию, которую можно протестировать или развернуть в учётной записи пользователя.