Dev48
ЯЗЫК
  • О нас
  • Услуги
  • Индустрии
  • Технологии
  • Статьи
  • Контакты
Забронировать звонок
    Главная/Статьи/Postanovka mux robots directives v ochered s pomoschyu laravel
Dev48
info@dev48.org+375 29 320-40-96WhatsApp@isky_by

© 2026 · Все права защищены.

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

Источник: Mux•28 сентября 2026 г. в 14:45

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

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

Очереди 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. Оцените его, форкните, разберите.

← Все статьи

О чём эта статья

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

Все →
Ваш Substack теперь с большим количеством возможностей для настройки
Substack

Ваш Substack теперь с большим количеством возможностей для настройки

Альтернативы Vimeo: какая видеоплатформа лучше всего подойдет для вашей работы в 2026 году?
Vimeo

Альтернативы Vimeo: какая видеоплатформа лучше всего подойдет для вашей работы в 2026 году?

CUPRA выпускает новую версию Tribe Edition Sennheiser™, доступную для моделей Formentor, Terramar, Leon и Leon Sportstourer
Sennheiser

CUPRA выпускает новую версию Tribe Edition Sennheiser™, доступную для моделей Formentor, Terramar, Leon и Leon Sportstourer

Vimeo против Livid: какую видеоплатформу выбрать?
Vimeo

Vimeo против Livid: какую видеоплатформу выбрать?

Vimeo против SproutVideo: 7 отличий, которые помогут выбрать подходящий вариант для вашего бизнеса
Vimeo

Vimeo против SproutVideo: 7 отличий, которые помогут выбрать подходящий вариант для вашего бизнеса

Vimeo против Vidyard: Путь одной B2B-сделки от первого письма до онбординга
Vimeo

Vimeo против Vidyard: Путь одной B2B-сделки от первого письма до онбординга

Ещё от Mux

Как дизайнер научился развидеть Уилла Смита, едящего спагетти
Mux

Как дизайнер научился развидеть Уилла Смита, едящего спагетти

Как я создал сайт для обмена видео с помощью Claude Code и Mux после многих лет перерыва в кодинге
Mux

Как я создал сайт для обмена видео с помощью Claude Code и Mux после многих лет перерыва в кодинге

Опыт агентов и рост за счет ИИ-агентов: беседа с Кейланом Барнсом
Mux

Опыт агентов и рост за счет ИИ-агентов: беседа с Кейланом Барнсом

Радуйтесь, люди и агенты: Mux Robots теперь доступна всем (GA)
Mux

Радуйтесь, люди и агенты: Mux Robots теперь доступна всем (GA)

Что iPhone Duo означает для веб-разработки
Mux

Что iPhone Duo означает для веб-разработки

Представляем оповещения о расходах: получайте уведомления, когда ваши затраты превышают установленные вами пороги
Mux

Представляем оповещения о расходах: получайте уведомления, когда ваши затраты превышают установленные вами пороги