Dev48
ЯЗЫК
  • О нас
  • Услуги
  • Индустрии
  • Технологии
  • Статьи
  • Контакты
Забронировать звонок
    Главная/Статьи/Postanovka mux robots directives v ochered s pomoschyu laravel
Dev48

© 2026 · All rights reserved.

Постановка Mux Robots Directives в очередь с помощью Laravel

Источник: Mux

Постановка Mux Robots Directives в очередь с помощью Laravel

Источник: Mux

Очереди Laravel отлично сочетаются с Mux Robots, когда нужно оркестрировать несколько Directives.

28 сентября 2026 г.•Обновлено: 28 сентября 2026 г.

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

Мое стриминговое приложение, 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, потому что пользователи могут выбрать любой целевой язык. Ранее в этой статье мы вызывали Directives по их ID. Нет смысла создавать Directive для каждого сценария перевода, который пользователь может выбрать, если только я не хочу, чтобы каждое загруженное видео переводилось на один и тот же фиксированный набор языков. Параметры рабочего процесса являются частью сохраненного определения Directive, поэтому пока динамические переводы остаются индивидуально поставленными задачами Mux Robots.

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

LinkTry it yourself

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

Рабочий код находится в RoboTube Repo. Оцените его, форкните, разберите.

← Все статьи

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

Все →
Может ли Muse преодолеть проблемы доверия Meta?Пресса
Meta

Может ли Muse преодолеть проблемы доверия Meta?

Агент Muse от Meta атакует одно из самых прибыльных слабых мест экономикиПресса
Meta

Агент Muse от Meta атакует одно из самых прибыльных слабых мест экономики

Meta и YouTube заявили, что все-таки будут показывать рекламу документального фильма о Маске
Пресса
Meta

Meta и YouTube заявили, что все-таки будут показывать рекламу документального фильма о Маске

На Meta Connect умные очки компании были повсюдуПресса
Meta

На Meta Connect умные очки компании были повсюду

У Automattic новый совет директоров после неудачной попытки отправить генерального директора в отпускПресса
Automattic

У Automattic новый совет директоров после неудачной попытки отправить генерального директора в отпуск

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

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

Ещё от Mux

Кадры, планы и сцены: структурирование видео для AI-процессов
Mux

Кадры, планы и сцены: структурирование видео для AI-процессов

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

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

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

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

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

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