Dev48
ЯЗЫК
  • О нас
  • Услуги
  • Индустрии
  • Технологии
  • Статьи
  • Контакты
Забронировать звонок
    Главная/Статьи/Ispolzovanie ocheredey laravel dlya upravleniya direktivami mux robots
Dev48

© 2026 · All rights reserved.

Использование очередей Laravel для управления директивами Mux Robots

Источник: Mux

Использование очередей Laravel для управления директивами Mux Robots

Источник: Mux

Laravel Queue are a great match with Mux Robot when you want to orche trate multiple Directive .

25 сентября 2026 г.

Очереди Laravel (Laravel Queues) — это инструмент, меняющий правила игры для разработчиков, создающих приложения для потоковой передачи видео. Очереди обеспечивают надежный уровень оркестрации для параллельного выполнения процессов, делая сложные рабочие процессы более быстрыми и простыми в управлении.

Мое стриминговое приложение RoboTube буквально живет за счет облачных AI-рабочих процессов Mux Robots. Оно модерирует контент при загрузке, создает краткое содержание видео, генерирует главы, находит ключевые моменты и выбирает лучшие миниатюры сразу после нажатия кнопки загрузки. В нем даже есть собственный видеоплеер на базе Mux Robots. Однако ни один из этих рабочих процессов не укладывается во время выполнения обычного HTTP-запроса. Для некоторых этапов нужны субтитры, некоторые могут выполняться параллельно, удаленные задачи могут завершаться в разное время, а вебхуки могут приходить с задержкой или вовсе не приходить.

Именно здесь на помощь приходят директивы Mux Robots и очереди Laravel. Директивы позволяют Mux взять на себя управление зависимостями рабочих процессов, специфичных для видео, в то время как очереди Laravel обеспечивают надежную границу приложения для запуска задач, обработки вебхуков и синхронизации результатов с моим приложением.

LinkRoboTube

Если вы видели другие мои посты в блоге или выступления, то знаете, что я создаю RoboTube — приложение для потоковой передачи видео, которое реализует практически все функции Mux Robots. Когда пользователь загружает видео, рабочие процессы Mux Robots автоматически запускаются последовательно благодаря директивам, а результаты передаются пользователю через очереди Laravel.

YouTube послужил вдохновением, однако реальный продукт оказался всем тем, что происходит после загрузки, и именно здесь пригодились директивы и очереди.

Директивы управляют последовательностью и зависимостями, специфичными для видео, а очереди Laravel обрабатывают надежную работу приложения вокруг них.

LinkМоя первая версия сделала Laravel видео-оркестратором

До появления директив каждый рабочий процесс Mux Robots был отдельной задачей в очереди Laravel.

Такая архитектура была надежной для первой итерации проекта, во многом благодаря Laravel Cloud и надежному состоянию базы данных. Очереди Laravel были очень мощными, так как позволяли повторять вызовы API, ограничивать частоту запросов и восстанавливать работу после сбоя воркера.

Ошибка заключалась в том, что Laravel должен был «знать», что генерация глав, поиск ключевых моментов и перевод субтитров не могут начаться, пока не будет готов трек с субтитрами.

LinkДирективы взяли на себя ожидание субтитров

Вместо того чтобы просить Laravel Cloud создавать четыре удаленные задачи и координировать их, Laravel может запустить один процесс директивы:

plaintext

json

Мне это нравится, потому что директивы позволяют Mux взять на себя большую часть работы, специфичной для видео, например:

  • Повторное использование трека субтитров, если он уже готов
  • Генерация субтитров, если они отсутствуют
  • Ожидание готовности ресурса субтитров
  • Запуск генерации глав и поиска ключевых моментов после выполнения зависимости от субтитров
  • Параллельное выполнение независимых рабочих процессов
  • Отслеживание дочерних задач Mux Robots в рамках одного запуска директивы

Раньше Laravel оркестровал все эти условия с помощью огромного количества кода на уровне приложения. Управлять этим стало сложно, поэтому я решил изменить подход.

Новый способ разделения выглядит так:

plaintext

Директивы Mux Robots не заменяют очереди Laravel. Они меняют то, за что отвечают очереди. Вместо использования отдельных задач Laravel для запуска, последовательного выполнения и мониторинга каждого рабочего процесса Mux Robots, приложение запускает директиву и позволяет Mux обрабатывать распределение задач и специфичные для видео зависимости, такие как ожидание субтитров перед генерацией глав или ключевых моментов. Очереди Laravel остаются ценными на уровне приложения: для надежного запуска директив модерации и структурных директив, обработки вебхуков Mux, синхронизации результатов с Convex (где хранятся данные моего приложения) и восстановления после пропущенных событий. Это обеспечивает более управляемое разделение обязанностей.

Представьте это так: Mux оркестрирует рабочие процессы видеоаналитики, а Laravel обеспечивает надежную интеграцию с остальной частью приложения.

LinkНе одна, а две директивы

Вы можете подумать, что нужно объединить модерацию, создание краткого содержания, генерацию глав, поиск ключевых моментов и выбор миниатюр в одну большую директиву, но я придумал другой способ архитектуры.

RoboTube намеренно использует две директивы:

  • Директива модерации, содержащая только рабочий процесс модерации.
  • Директива структурного обогащения:

Краткое содержание ➡️ Поиск ключевых моментов ➡️ Поиск лучших миниатюр

Я разделил эти две директивы из-за пользовательского опыта, который мне был нужен при загрузке видео. Я отделил модерацию от остального, потому что если пользователь загружает видео и модерация отклоняет его, я не хочу, чтобы запускался остальной конвейер структурного обогащения. Это делает код инфраструктуры намного проще, экономит деньги и автоматически защищает моих пользователей от неприемлемого контента. Это отличное разделение ответственности, поскольку Laravel остается ответственным только за оркестрацию двух директив, которые служат разным целям. Директивы управляют сложностью автоматизации и гарантируют выполнение желаемых рабочих процессов без дополнительного кода инфраструктуры.

php

LinkПросто, но именно так мне нравится

Задача загрузки для модерации намеренно сделана небольшой.

php

Она загружает надежный запуск, находит ID директивы и делает один API-запрос.

php

Раньше у меня была задача Laravel для каждого рабочего процесса Mux Robots:

  • Создание краткого содержания
  • Генерация глав
  • Поиск ключевых моментов
  • Поиск лучших миниатюр

Замена этого пакета не означает, что очередь стала декоративной. Laravel по-прежнему выполняет повторные попытки, экспоненциальную задержку и ограничение частоты запросов на границе. Воркер может зарезервировать задачу, вызвать Mux Robots и упасть. При повторной попытке он не будет вслепую снова запускать ту же дорогостоящую работу. Когда Mux Robots принимает запуск директивы, он возвращает ID директивы, и приложение сохраняет эту квитанцию.

php

Каждая повторная попытка сначала проверяет наличие этой квитанции:

php

Если удаленный запуск уже существует, Laravel синхронизирует его вместо создания нового.

LinkВосстановление — это все еще работа Laravel

Директивы Mux Robots делают выполнение рабочего процесса надежным. Они не делают надежным состояние моего приложения. Вебхук может не дойти до эндпоинта, воркер очереди может перезапуститься после получения события, или моя база данных Convex может быть временно недоступна, когда Laravel пытается выполнить синхронизацию.

Поэтому я добавил опросник (poller).

php

Он получает запуск директивы, чтобы восстановить ID дочерних задач Mux Robots, затем получает любую дочернюю задачу, чей вебхук о завершении выглядит пропущенным, и передает эти результаты через тот же механизм перехода состояний, который использует обработчик вебхуков. Опросник и обработчик вебхуков не имеют разных представлений об успехе и неудаче.

LinkЭто ваше приложение. Вы устанавливаете правила.

Прелесть API в том, что вы можете использовать их как хотите. В RoboTube я все еще использую Mux Robots без директив, но на то есть причина.

RoboTube позволяет пользователям запрашивать субтитры или аудиоперевод на ряд языков. Такой рабочий процесс плохо сочетается с директивами (Directives), поскольку пользователи могут выбирать любой целевой язык. Ранее в этой статье мы запускали директивы, используя их идентификаторы. Нет смысла создавать директиву для каждого сценария перевода, который может выбрать пользователь, если только я не хочу, чтобы каждая загрузка переводилась на один и тот же фиксированный набор языков. Параметры рабочего процесса являются частью сохраненного определения директивы, поэтому на данный момент динамические переводы остаются индивидуально поставленными в очередь заданиями Mux Robots.

Таким образом, это по-прежнему Mux Robots, просто для двух разных типов пользовательского поведения. Сводки, главы, ключевые моменты и миниатюры — это стабильные функции продукта, в то время как переводы, выбираемые во время запроса, являются динамическими входными данными.

Ссылка: Попробуйте сами

Сочетание директив Mux Robots и очередей Laravel — это неожиданная комбинация, которая, я рад, сработала. Она устранила сложность и добавила надежный барьер, который помогает обеспечить лучший пользовательский опыт для пользователей RoboTube.

Рабочий код находится в репозитории RoboTube. Поставьте звездочку, сделайте форк, разберите его на части.

← Все статьи

Ещё в разделе «Медиа, контент и развлечения»

Все →
Meta открывает программу раннего доступа к новым функциям MuseПресса
Meta

Meta открывает программу раннего доступа к новым функциям Muse

«Мощный прорыв» Meta создает уникальную торговую стратегию, считает Майк ХауПресса
Meta

«Мощный прорыв» Meta создает уникальную торговую стратегию, считает Майк Хау

Meta делает ставку на Muse, популярность которой стремительно растет
Пресса
Meta

Meta делает ставку на Muse, популярность которой стремительно растет

Марк Цукерберг представил VR-очки Meta за 1299 долларов и кулон Muse Charm в рамках продвижения ИИ-агентовПресса
Meta

Марк Цукерберг представил VR-очки Meta за 1299 долларов и кулон Muse Charm в рамках продвижения ИИ-агентов

Как создать легкий видеоплеер с приоритетом мобильных устройств для розничных сайтов
Cloudinary

Как создать легкий видеоплеер с приоритетом мобильных устройств для розничных сайтов

Meta создала носимое устройство, похожее на тамагочи, для своего ИИ-агента MuseПресса
Meta

Meta создала носимое устройство, похожее на тамагочи, для своего ИИ-агента Muse

Ещё от Mux

Кадры, планы и сцены: структурирование видео для рабочих процессов ИИ
Mux

Кадры, планы и сцены: структурирование видео для рабочих процессов ИИ

Mux Robots облегчили жизнь нашему видеомонтажеру
Mux

Mux Robots облегчили жизнь нашему видеомонтажеру

Как Firecrawl помогает нашему отделу продаж создавать персонализированные демоверсии продуктов
Mux

Как Firecrawl помогает нашему отделу продаж создавать персонализированные демоверсии продуктов

Используйте любую* LLM с @mux/ai
Mux

Используйте любую* LLM с @mux/ai