Sep
звук и видео разбираются на самом устройстве
Убрать шум, развести голоса, вырезать одного говорящего, свести музыку с видео, положить поверх надписи с ключевыми кадрами и смонтировать результат — без сервера и без интернета. Не веб и не панель: свой движок на Rust и приложение для Mac и Android.


Запись, где говорят трое, а нужен один. Ролик, где шумит дорога. Музыка, которую надо положить под видео. Обычно это три разных сервиса, и в каждый файл надо загрузить.
Мы хотели одно приложение, которое делает всё это на самом устройстве: запись никуда не уходит, и связь не нужна. И вторая половина задачи — проверить себя вне привычного: не сайт и не админка, а обработка сигнала, нейросети и видео на телефоне.
Приложение находит в записи людей и показывает, кто и когда говорит. Дальше — выбор: убрать шум, развести голос и фон или убрать одного говорящего целиком. Там, где люди говорят одновременно, голоса сначала разделяются, и уходит только нужный.
Обработка привязана не к ролику, а к отрывку на таймлайне. Разрезали запись — и в одной части убран шум, в другой убран голос, третья звучит как записана. Движок при этом считает только выбранный участок, а не весь файл.
Людей можно подсказать: отметить пару секунд речи и назвать человека. Найденные в разных отрывках сверяются по голосу — один и тот же человек получает одно имя по всему проекту, а не новый номер в каждом куске.
Ролики и звук ложатся на общий таймлайн: их режут, склеивают и кладут друг под друга. Файл можно просто бросить в окно — он встанет от указателя. Обрезанное не теряется: исходник хранится, и отрезанную часть можно вернуть.
Всё, что лежит под указателем, звучит сразу: музыка под видео, второй голос, сколько угодно дорожек — без сборки файла. В готовый ролик уходит ровно то, что слышно.
На вкладке «Видео» — картинка: поворот, цвет, слежение за объектом. Отмечаешь объект на одном кадре — приложение ведёт его через весь ролик и держит на нём окно, даже когда объект ненадолго скрывается.
Поверх видео ложатся надписи и картинки — слоями на своих дорожках над роликом. Их тащат одним пальцем, двумя — масштабируют и поворачивают. Слой прилипает к середине кадра и к соседям, несколько слоёв выравниваются друг по другу одной кнопкой.
Место, масштаб, поворот и прозрачность движутся по ключевым кадрам — как в After Effects. У каждого свойства свой секундомер, ключи видны на таймлайне отдельной полоской на свойство: ромбик тянется по времени, выделенный удаляется.
Между ключами — кривая. Есть заготовки («ровно», «плавно», «разгон», «тормоз», «скачок»), а можно взять две ручки и потянуть пальцем, как cubic-bezier в CSS. Вытянутая за рамку кривая даёт перелёт: надпись проскакивает место и возвращается. Правка видна на картинке сразу.
В файл слои рисуются тем же кодом, что и на экране, — в ролике ровно то, что было видно. Неподвижный слой рисуется один раз на всё время, что стоит; движущийся — кадр за кадром, но только в том прямоугольнике, который он проходит.

Любой отрывок можно ускорить или замедлить — от ×0,1 до ×8, ровно или разгоном по ключам с теми же кривыми, что у слоёв. Ключи стоят на секундах самого ролика: обрезка и перенос отрывка разгон не сдвигают.
Звук идёт с той же скоростью, но голос не превращается в бурундука: движок растягивает его во времени без смены высоты. Алгоритм свой, на Rust, — встроенного в FFmpeg на устройстве нет. И он держит громкость: на шуме обычное растяжение проседает на несколько децибел, наше — укладывается в полдецибела.
В готовом файле разгон режется на кусочки по десятой доли секунды, у каждого своя скорость. Поэтому файл по длине совпадает с таймлайном до кадра, а картинка — со звуком.
Приложением пользуются в основном с телефона и одной рукой. Поэтому всё, что делается часто, делается нажатиями, а кнопки стоят под большим пальцем. Клавиатура нужна только чтобы назвать новое.



Теги вложенные и лежат по папкам. Вся система видна деревом: под каждым тегом — проекты, дерево можно приближать, пока обложка не займёт экран.
Тег можно переименовать, перенести, склеить с соседним или удалить — сразу во всех проектах. Папку можно сделать обязательной: приложение напомнит, что на проекте ещё не выбрано. Поиск понимает несколько условий через запятую и вложенность через двоеточие.

Любую правку можно отменить: обрезку ролика, ключ слоя, разгон отрывка, найденных спикеров, переименование тега сразу на всех проектах. Журнал правок один на проект, и он хранит не только данные, но и файлы, которые правка задела: отменил — файл вернулся на место.
Проект — один файл: исходник, результаты, разметка и теги. Его можно сохранить, переслать и открыть на другом устройстве.
Сервер для обработки не нужен, но переносить проекты между устройствами — нужно. Для этого у студии своё хранилище, совместимое с S3, и синхронизация всей медиатеки: правка сама уходит в облако через несколько секунд, файлы хранятся по содержимому — одинаковое не грузится дважды, а при правке уходит только изменившееся.
На телефоне видно всё, что есть на компьютере: проект, которого на устройстве нет, лежит карточкой с весом в облаке и докачивается, когда понадобится. Удалить его можно только с этого устройства или отовсюду — тогда он месяц лежит в корзине облака.
Вся обработка — в движке на Rust. Он собран как библиотека, и одно и то же ядро работает в приложении на Mac, в приложении на Android и в командной строке. Нейросети исполняются на самом устройстве; их веса скачиваются один раз.
У проекта 382 автопроверки — движка и интерфейса, включая экраны в размере телефона. Каждая сборка уходит в хранилище с контрольной суммой, и выложенную сборку нельзя подменить.
Экраны на этой странице приложение сняло само. Демо-медиатека приходит в него из облака, как к любому пользователю, а завёл её тоже сам Sep: проекты, теги, спикеров и монтаж.
Материалы в ней — видео и звук NASA и «Лунный свет» Дебюсси в исполнении Laurens Goedhart, в общественном достоянии. Использование материалов NASA не означает, что агентство одобряет продукт.
На 23 октября — 21 день от первого коммита: 106 выпусков, 15,3 тысячи строк движка на Rust и 42,6 тысячи строк приложения. Приложение работает на Mac и Android. Публичный релиз готовится — пока приложение проходит обкатку на настоящей медиатеке.
Медиатека
проекты и отбор по тегам

Редактор на телефоне
плеер и таймлайн

Слои и ключи на телефоне

Теги по папкам
открыл папку, нажал тег

Три отрывка — три обработки
без шума, как записано, без одного голоса
Слои поверх видео
ключи — полоской на свойство







