MultiTrack в горизонтальной ориентации
MultiTrack в горизонтальной ориентации

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

Ну а сколько стоит, например, LumaFusion в полной комплектации, так это просто... Основная претензия от меня как от профи — на всех приложениях, как правило, одна дорожка! Я решил написать редактор видео таким, каким я его вижу на мобильном устройстве.

MultiTrack - окно TimeWarp для работы с изменением скорости
MultiTrack — окно TimeWarp для работы с изменением скорости
Можно подключить клавиатуру и работать используя хоткеи
Можно подключить клавиатуру и работать используя хоткеи

Вдохновившись несколькими проектами на GitHub, я начал потихоньку собирать идею в голове и в VS Code. Некоторые проекты были созданы на базе Apple Sprite Kit, за счет чего показывали просто феноменальную отзывчивость интерфейса, но подход имел несколько фатальных недостатков. Sprite Kit панели в интерфейсе имели плохо контролируемую «проницаемость» — это когда, например, жмешь на какой‑то объект на таймлайне, а нажимается какой‑нибудь контролл под ним, который там оказался из‑за скролла другой панели.

И вот, казалось бы, есть Z‑последовательность панелей, настраивай и всё... Но на практике всё это работало настолько отвратительно, постоянные случайные нажатия динамически созданных объектов, которые ни в какую не хотели слушаться Z‑порядка слоев.

После месяца мытарств с Sprite Kit я перевел проект на гугловский Dart Flutter, убив сразу двух зайцев — стабильная обработка касаний и кроссплатформенность проекта. Благодаря Flutter появилась возможность выпустить в перспективе проект на другие платформы — Android, Windows, Linux, ну и, конечно же, на яблофоны.

Многие, услышав про кросплатформенный Flutter, махнут рукой, может показаться, что редактор на не нативной языковой платформе превратится в медленную неотзывчивую шляпу, но нет! Видеоредактор получился очень живым, нет никаких лагов по вине кросс‑платформы. Если кто не в курсе, Flutter работает несколько иначе, чем React Native, Xamarin и прочие — он рисует интерфейс самостоятельно! Всё это очень быстро и эффективно.

Как вы понимаете, видеоредактор — это именно то приложение, которое по максимуму использует процессор и все виды памяти на устройстве — видеопамять, оперативка, ПЗУ. И тем не менее всё работает очень хорошо! Но правда, для комфортной работы нужен хороший планшет или смартфон уровня Nothing Phone 2 или, например, iPhone 14. На этих устройствах я и тестировал приложение.

Было очень интересно реализовывать такие вещи, как (далее термины‑тэги) — фейды, энвелопер звука, эффекты с поддержкой кейфремов, кроп, скеил, позиция, цветокоррекция, инструмент изменения скорости, GPU‑рендер, изменяемость размеров всех панелей и их положение в разных ориентациях экрана и еще много всего.

Я залип на этом проекте на три месяца. На последок добавил транскрипцию голоса в субтитры и в духе времени реализовал поддержку ИИ‑ассистента для монтажа промптами. Классно то, что можно до бесконечности добавлять новые фичи и полировать уже существующие. Теперь я практически каждый вечер что‑то добавляю или фиксю в проекте, поле для деятельности тут бескрайнее.

Конечно, и сами ИИ‑ассистенты мне помогают в работе. Особая благодарность Жан Клоду Коду. Но это вовсе не значит, что весь проект навайбкоден, как топором фигурка. Это в любом случае очень тонкая работа с кодом, который не лежит в свободном доступе в больших количествах, а значит, и ИИ‑модели мало что знают, как это писать.

ИИ-асситент для видеомонтажа
ИИ‑асситент для видеомонтажа

Если кому интересно приложение называется MultiTrack, да, потому что там можно использовать неограниченное количество треков. Доступно в Rustore под Android и как mac‑десктоп приложение на сайте appstorrent.ru. Версию для огрызков еще не выпустил, но она планируется.