LINUX.ORG.RU

Timeline Studio: открытый видеоредактор с WebGPU и локальными ИИ-моделями в браузере

 , , ,


1

1

Мы разрабатываем Timeline Studio — открытый видеоредактор, который запускается в браузере и старается выполнять как можно больше операций локально, без обязательной отправки исходных материалов на сервер.

Репозиторий распространяется по лицензии MIT:

github.com/MartinDelophy/ai-video-editor

Проект предназначен прежде всего для экспериментов с браузерным монтажом, WebCodecs, WebGPU, ONNX Runtime Web и локальными моделями обработки мультимедиа. Это не попытка полностью заменить профессиональные настольные NLE, а практическая проверка того, насколько далеко сегодня можно зайти с видеомонтажом непосредственно в Chromium.

Зачем понадобился ещё один видеоредактор

У многих браузерных редакторов исходные файлы сначала загружаются на удалённый сервер. Это упрощает разработку, но создаёт несколько проблем:

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

В Timeline Studio исходным артефактом остаётся редактируемый проект .timeline. Медиафайлы можно упаковать вместе с проектом, перенести на другую машину и снова открыть в редакторе.

Что уже реализовано

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

Поддерживаются:

  • обрезка, разделение и перестановка клипов;
  • ripple editing и монтаж основной дорожки без разрывов;
  • picture-in-picture и другие визуальные наложения;
  • анимации и ключевые кадры;
  • маски, цветокоррекция и Color Wheels;
  • изменение скорости с сохранением привязки исходного времени;
  • разделение звука видео;
  • автоматические субтитры;
  • синтез речи и клонирование тембра с разрешённого образца;
  • разделение вокала и сопровождения;
  • интеллектуальное кадрирование;
  • выделение человека или объекта;
  • восстановление и шумоподавление видео;
  • браузерная генерация музыки;
  • экспорт в MP4 и WebM.

Интерфейс адаптирован для настольных и мобильных экранов и локализован на 11 языков, включая русский.

Как устроена обработка

Основной интерфейс написан на React и собирается через Vite. Для мультимедиа используются несколько браузерных путей.

WebCodecs применяется там, где браузер предоставляет необходимые кодеки и достаточно стабильное декодирование. Для совместимых операций также используются Mediabunny, libav.js и FFmpeg WASM.

Модели машинного обучения запускаются через ONNX Runtime Web. Для тяжёлых вычислений предпочтителен WebGPU, а отдельные модели используют WASM, если этот путь даёт более стабильный результат.

Большие модели загружаются по требованию и сохраняются в Cache Storage. При повторном запуске редактор старается использовать локальный кэш, поэтому повторная генерация не должна выглядеть как новая загрузка модели.

Обработка вынесена в Web Workers, чтобы декодирование, инференс и анализ видео меньше блокировали интерфейс.

Локальные и удалённые возможности

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

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

При этом удалённая генерация изображений и видео оформлена как система подключаемых провайдеров. Например, Puter.js использует собственную браузерную авторизацию и инфраструктуру провайдера.

Для локальных генераторов предусмотрены отдельные коннекторы:

  • ComfyUI принимает workflow в API Format, отправляет реальное задание на loopback-адрес и импортирует объявленные результаты;
  • Stable Diffusion WebUI/Forge использует совместимые API txt2img и img2img.

Редактор подключается к таким службам только через loopback. Мы не рекомендуем открывать незащищённые интерфейсы ComfyUI или WebUI в локальную сеть.

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

Голос и субтитры

Автоматическое распознавание речи выполняется локальной ONNX-моделью Whisper.

Для синтеза речи используются разные браузерные движки. Китайские голоса проекта работают через Hojo TTS Light 80M: авторегрессионная часть выполняется через WebGPU, а декодирование звука — через WASM.

OpenVoice V2 используется не как самостоятельный TTS, а как второй этап изменения тембра. Пользователь сначала должен создать локальный профиль на основе собственного или разрешённого голоса. Исходный образец и извлечённое представление хранятся в IndexedDB и могут быть удалены пользователем.

Мы считаем это принципиальным ограничением: нельзя загружать чужой голос или лицо без явного разрешения владельца.

Предпросмотр и экспорт

Одна из наиболее сложных частей браузерного видеоредактора — согласовать предпросмотр и итоговый файл.

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

Для видеодорожки извлекаются кадры с реальными presentation timestamps. Обычная киноплёнка остаётся достаточно разреженной для чтения, но ячейка под курсором может заменяться точным исходным PTS-кадром. Это уменьшает вероятность того, что миниатюра покажет следующий план раньше фактической точки склейки.

Экспорт выполняется в браузере. Основной путь использует WebCodecs, а совместимый путь — браузерные медиабиблиотеки и WASM. Результат зависит от доступных в конкретном браузере кодеков и возможностей оборудования.

Управление проектами через Agent Skill

В репозитории также находится Agent Skill edit-timeline-studio. Он предназначен для Codex, Claude Code, GitHub Copilot и Gemini CLI.

Skill может:

  • инспектировать архив .timeline;
  • строить план изменений;
  • показывать semantic diff до применения;
  • импортировать локальные медиа с SHA-256-метаданными;
  • изменять клипы, субтитры и аудиосвязи;
  • сохранять результат в новый проект;
  • проверять повторное открытие изменённого архива.

Изменение проекта разделено на этапы inspect, dry-run и apply. Исходный файл не должен молча перезаписываться.

Установка Skill через skills.sh:

npx skills add MartinDelophy/ai-video-editor --skill edit-timeline-studio

>>> Timeline Studio



Проверено: hobbit ()
Последнее исправление: cetjs2 (всего исправлений: 2)
Ответ на: комментарий от dataman

Разве это важно? Куда важнее, чтобы сам редактор из-под линукса работал. Ну и исходники открытые.

hobbit ★★★★★
()

Всё бы ничего,но сразу вопрос: зачем привязываться к браузеру? Можно понять, когда нужно для возможности работы через сеть, но для локальной работы, мне кажется, это плодить лишние зависимости от чужого софта. Причём тот же WebGPU есть и в безбраузерном варианте как wgpu-native или dawn.

Есть ещё одна штука. Я буквально сейчас для кое-какой очень мелкой своей поделки пытаюсь написать универсальный и кросплатформенный код с использованием OpenMP или OpenBLAS и Vulkan. Столкнулся с тем, что GPU хотя и работает универсально, но имеет чудовищную просадку производительности на всех типах данных, кроме float64. Правда не пробовал int-типы.

Для сравнения. На моей видеокарте с использованием Python и PyTorch (хотя это PyTorch, но работаю не с моделями, а просто как фреймворк с ускорением вычислений на GPU), скомпилированного под Cuda/Rocm скорость fp16 - 84 TFlops, через Vulcan - 4.3 TFlops, fp32 - 20.4 TFlops / 3.2 TFlops и только fp64 несильно отстал: 0.96/0.82 TFlops

WebGPU не пробовал, но вроде он в Linux поверх Vulkan сделан, хотя в винде всё же поверх DirectX12. Сейчас думаю как написать код для шейдеров лучше. Очень может быть, что у меня просто руки кривоватые оказались и не задействовал нужные ускорения, всё же чисто через Vulkan писать вычисления гиморно и код блотварно выглядит. Надо будет глянуть, что с OpenCL получится. Или с llama.cpp - они вроде там оптимизировали у себя под Vulkan.

anonymous_incognito ★★★★★
()
Последнее исправление: anonymous_incognito (всего исправлений: 1)

Оказывается в браузер уже и видеоредакторы затащили. А чего в какой-нибудь Electron не завернуть тогда если всё-равно основные операции локально?

zabbal ★★★☆☆
()
Ответ на: комментарий от anonymous_incognito

Сейчас ещё погуглил, может WebGPU всё же как раз правильно задействует по умолчанию ускорение. Но это всё тестировать надо.

anonymous_incognito ★★★★★
()

видео редактор в браузере да еще с ии - классическое нинужно

amd_amd ★★★★★
()
Ответ на: комментарий от dataman

Главная причина выбора браузер‑ориентированного подхода — низкий порог входа для обычных пользователей. Достаточно открыть ссылку‑демо, ничего не скачивая и не устанавливая.

При разработке нативного приложения для Linux или Electron‑программы пользователям пришлось бы скачивать и устанавливать пакеты, а мне — упаковывать большие файлы моделей ONNX в дистрибутив. Это создаёт много проблем с распространением и обновлениями.

Я знаю про wgpu‑native, это перспективное направление, возможно реализую его в будущем. Но на данный момент браузер‑развёртывание — наиболее практичный вариант для широкой аудитории.

martindelophy
() автор топика
Ответ на: комментарий от anonymous_incognito

Главная причина выбора браузер‑ориентированного подхода — низкий порог входа для обычных пользователей. Достаточно открыть ссылку‑демо, ничего не скачивая и не устанавливая.

При разработке нативного приложения для Linux или Electron‑программы пользователям пришлось бы скачивать и устанавливать пакеты, а мне — упаковывать большие файлы моделей ONNX в дистрибутив. Это создаёт много проблем с распространением и обновлениями.

Я знаю про wgpu‑native, это перспективное направление, возможно реализую его в будущем. Но на данный момент браузер‑развёртывание — наиболее практичный вариант для широкой аудитории.

martindelophy
() автор топика

Не ясно, почему «как можно больше», а не «все». Такое ощущение, что нелокальными остаются как раз самые шпионские функции.

Saakx
()

искусственный интеллект

спасибо, не надо!

Rodegast ★★★★★
()
Ответ на: комментарий от martindelophy

Главная причина выбора браузер‑ориентированного подхода — низкий порог входа для обычных пользователей.

«браузер‑ориентированного подход» это высокий порог входа как минимум по железу.

Это создаёт много проблем с распространением и обновлениями.

Скачиваешь AppImage и сразу запускаешь. В чем проблемы?

Rodegast ★★★★★
()

Прямо-таки бинго из говнотехнологий. Для полноты картины, надо было еще питон засунуть туда.

alexei-i
()
Ответ на: комментарий от martindelophy

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

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

Если пользователь не в состоянии установить программу, то максимум что он сделает - поиграется день-другой и выбросит. Это точно ваша аудитория?

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

Kroz ★★★★★
()
Ответ на: комментарий от martindelophy

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

Вы лишаете работы системных администраторов, не надо так делать.

vbcnthfkmnth123 ★★★★★
()

Ничего концептуально более всратого я еще не видел в этом году.

unname
()
Ответ на: комментарий от martindelophy

Главная причина выбора браузер‑ориентированного подхода — низкий порог входа для обычных пользователей. Достаточно открыть ссылку‑демо, ничего не скачивая и не устанавливая.

То бишь целевая аудитория - бухгалтерши и разные манагеры…? Просто напомню, что процесс установки освоен как бы вполне у людей, которым нужно какое-либо ПО, а «Сурьезные контентмейкеры» сразу откажутся, потому что это «не то чем они Привыкли пользоваться»…))))

Но на данный момент браузер‑развёртывание — наиболее практичный вариант для широкой аудитории.

… для дешевого (но убого) способа что-то предложить широкой аудитории. - Поправил, не благодари))))

Sm0ke85
()
Ответ на: комментарий от Sm0ke85

Именно так. 80% людей в мире — это как раз те самые «манагеры», маркетологи, SMM и обычные пользователи, которым нужно быстро обрезать ролик или наложить субтитры за 30 секунд, а не ставить 20-гигабайтный софт и настраивать рендер. Если закрывать задачи 80% рынка быстро и без барьеров — это «убого», то пусть будет так. Рынок все расставит по местам. 😉

martindelophy
() автор топика

видеоредактор

в браузере

не нужно

zenden
()
Последнее исправление: zenden (всего исправлений: 1)
Ответ на: комментарий от martindelophy

те самые «манагеры», маркетологи, SMM и обычные пользователи

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

vbcnthfkmnth123 ★★★★★
()
Последнее исправление: vbcnthfkmnth123 (всего исправлений: 1)
Ответ на: комментарий от martindelophy

Именно так. 80% людей в мире — это как раз те самые «манагеры», маркетологи, SMM и обычные пользователи, которым нужно быстро обрезать ролик или наложить субтитры за 30 секунд, а не ставить 20-гигабайтный софт и настраивать рендер. Если закрывать задачи 80% рынка быстро и без барьеров — это «убого», то пусть будет так. Рынок все расставит по местам. 😉

кденлайв, мувиемейкер (если он еще жив))) )

Sm0ke85
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.