Вы должны иметь возможность создавать и редактировать видео, используя только веб-браузер. Должно быть возможно предоставить пользовательский интерфейс, похожий на Screenflow, который позволяет создавать выходное видео, которое объединяет несколько видео, изображений и аудио в одно видео, которое может быть загружено на такие сервисы, как YouTube.
Этот пост - это просто заявление о намерениях. Я собираюсь начать долгий процесс разработки того, что есть и недоступно на платформе, и посмотреть, как далеко мы можем сегодня добраться.
Я люблю FFMPEG.js, это аккуратный инструмент, который скомпилирован с помощью asm.js`and, и пусть он будет создавать JS-приложения, которые могут быстро редактировать видео. FFMPEG.js также работает с веб-рабочими, чтобы вы могли кодировать видео без блокировки основного потока.
Я также люблю Comlink. Comlink позволяет мне легко взаимодействовать с веб-рабочими, выставляя функции и классы, не имея дело с сложным конечным автоматом postMessage.
Недавно мне удалось объединить этих двух. Я экспериментировал с тем, чтобы экспортировать FFMPEG в Web Assembly (он работает - yay), и я хотел очистить всю работу postMessage в текущем проекте FFMPEG.
Сэм Торогуд на Dev.to пишет:
Why did I write this post? Emscripten is a wonderful tool, but it has a long history (for asm.js), and isn’t perfect. I think it errs too much on the side of “magic”, and many posts rave about how it’s so easy to EMASM or use binding-fu, but this all comes at a cost, and can introduce huge amounts of inadvertent overhead—think copying huge memory buffers around because we’re trying to make them immutable or easily exposed.
FFMPEG.js - удивительный проект, и это помогло мне построить один из моих последних проектов: Device Frame. Он в основном создает ffmpeg (с хорошим набором значений по умолчанию, чтобы сохранить размер small & mdash, насколько это возможно). Если сборка по умолчанию не поддерживает фильтры и кодировщики, которые вам нужны, тогда вам нужно будет ее самостоятельно создать.
Это скорее примечание для меня в будущем, но это то, что я сделал, чтобы заставить его работать.