Нелинейный видеоредактор без перекодирования

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

Что внутри:

- монтажный стол со своей отрисовкой: дорожки, масштаб, прилипание,
  схлопывание, громкость на клипе;
- предпросмотр прямо с монтажа через libmpv и виртуальный список кусков,
  без промежуточных файлов;
- сборка через ffmpeg с точными резами: перекодируется только огрызок от
  реза до ближайшего опорного кадра, остальное копируется;
- разбор заголовка MP4 для поиска опорных кадров — в 500 раз быстрее
  опроса ffprobe;
- перепаковка контейнеров, кадрирование и поворот, сведения о проекте;
- свои цвета всего окна: системные элементы под Windows цвет не берут,
  поэтому кнопки, полоса меню, журнал и полосы прокрутки нарисованы сами;
- окно зависимостей: недостающие ffmpeg, ffprobe и libmpv скачиваются с
  официальных источников;
- кросс-сборка под Windows и работа под Wine.

Первый коммит: до этого история не велась.
This commit is contained in:
chaiman 2026-08-19 18:36:16 +03:00
commit b59cdb1352
48 changed files with 22371 additions and 0 deletions

24
tests/build.sh Executable file
View file

@ -0,0 +1,24 @@
#!/bin/sh
# Сборка консольного инструмента проверок.
#
# Отдельно от основного проекта: nlvetool не тянет LCL и его виджеты,
# ему нужны только модули логики и LazUtils ради поиска ffmpeg в PATH.
set -e
FPC=/home/chaiman/fpcupdeluxe/fpc/bin/x86_64-linux/fpc.sh
LAZ=/home/chaiman/fpcupdeluxe/lazarus
HERE=$(cd "$(dirname "$0")" && pwd)
ROOT=$(dirname "$HERE")
mkdir -p "$HERE/lib"
"$FPC" \
-FU"$HERE/lib" \
-Fu"$ROOT/src" \
-Fu"$LAZ/components/lazutils/lib/x86_64-linux" \
-Fi"$LAZ/components/lazutils" \
-o"$HERE/nlvetool" \
"$HERE/nlvetool.lpr"
echo "готово: $HERE/nlvetool"

1001
tests/nlvetool.lpr Normal file

File diff suppressed because it is too large Load diff