Куски видео вырезаются и склеиваются копированием потока: сборка ролика занимает время копирования файла, а не время рендера. Композитинга нет принципиально — при перекрытии побеждает клип с верхней дорожки целиком, и картинкой, и звуком. Именно это ограничение и делает сборку копированием возможной. Что внутри: - монтажный стол со своей отрисовкой: дорожки, масштаб, прилипание, схлопывание, громкость на клипе; - предпросмотр прямо с монтажа через libmpv и виртуальный список кусков, без промежуточных файлов; - сборка через ffmpeg с точными резами: перекодируется только огрызок от реза до ближайшего опорного кадра, остальное копируется; - разбор заголовка MP4 для поиска опорных кадров — в 500 раз быстрее опроса ffprobe; - перепаковка контейнеров, кадрирование и поворот, сведения о проекте; - свои цвета всего окна: системные элементы под Windows цвет не берут, поэтому кнопки, полоса меню, журнал и полосы прокрутки нарисованы сами; - окно зависимостей: недостающие ffmpeg, ffprobe и libmpv скачиваются с официальных источников; - кросс-сборка под Windows и работа под Wine. Первый коммит: до этого история не велась.
27 lines
653 B
ObjectPascal
27 lines
653 B
ObjectPascal
program nlve;
|
||
|
||
{$mode objfpc}{$H+}
|
||
|
||
uses
|
||
{$IFDEF UNIX}
|
||
cthreads,
|
||
{$ENDIF}
|
||
Interfaces,
|
||
Forms,
|
||
uTheme,
|
||
uMainForm;
|
||
|
||
{$R *.res}
|
||
|
||
begin
|
||
RequireDerivedFormResource := True;
|
||
Application.Title := 'nlve';
|
||
Application.Scaled := True;
|
||
Application.Initialize;
|
||
{ Подписка на появление окон: своим окнам цвета задаются в их же
|
||
обработчике создания, а это подстраховка на случай окна, созданного
|
||
самой библиотекой. }
|
||
HookNewForms;
|
||
Application.CreateForm(TMainForm, MainFormInstance);
|
||
Application.Run;
|
||
end.
|