Skip to content
This repository was archived by the owner on Mar 30, 2026. It is now read-only.
firexrwtPublic archive

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

TERMINAL RENDERER

Рендеришь видео в стиле терминала на питоне. Также терминально, как стадия рака. Текст появляется посимвольно в синхронизации с аудио, сбоку выезжают картинки, фон живёт своей жизнью. Всё рисуется попиксельно. Работа проверена ТОЛЬКО НА ЛИНУКСЕ

Как это работает

content.py        - пишешь текст и команды по главам

transcribe.py     - faster-whisper транскрибирует аудио в слова с таймингами

align.py          - выравнивает слова по тексту глав, делает char_times

main.py           - строит таймлайн кадров, рендерит через multiprocessing, пайпит в ffmpeg

Зависимости

pip install pillow faster-whisper numpy
# + ffmpeg в системе
# + CUDA GPU для транскрибации

Запуск

# Транскрибировать аудио главы
python transcribe.py audio/ch0.mp3 -o audio/ch0_words.json

# Выровнять одну главу
python align.py audio/ch0_words.json --chapter 0

# Сгенерировать фон (один раз)
python background.py -o background.mp4

# Рендер
python main.py -o output.mp4 --background background.mp4

# Рендер только первых двух глав для проверки
python main.py -o test.mp4 --max-chapter 1

# Превью (каждый 30-й кадр в папку, без ffmpeg)
python main.py --preview

Структура контента

В content.py описываешь главы. Каждая глава - это команда и текст вывода:

{
    "command":  "cat intro.txt",   # команда которую "печатает" пользователь
    "dir":      "~/project",       # директория в промпте
    "audio":    "audio/ch0.mp3",   # аудио для этой главы
    "duration": 10.0,              # запасная длительность если нет timings.json
    "output":   "Текст главы...",  # стримится посимвольно
}

Внутри output можно вставлять маркеры картинок:

[[IMG:imgs/photo.jpg:left]]   - картинка выезжает слева
[[IMG:imgs/photo.jpg:right]]  - картинка выезжает справа
[[/IMG:left]]                 - левая панель уезжает
[[/IMG]]                      - обе панели уезжают

FAQ

Почему Pillow?

Потому что весело. Pillow - простой инструмент, который ты держишь в руках и понимаешь что происходит. Никакой магии, никаких абстракций поверх абстракций. Хочешь нарисовать прямоугольник - рисуешь прямоугольник. Это интереснее, чем скормить JSON в какой-нибудь Remotion и получить видос.

Почему не Manim / MoviePy / After Effects?

Manim заточен под математические анимации и тащит за собой LaTeX. MoviePy - обёртка над ffmpeg с кучей ограничений. After Effects стоит денег, не запускается из терминала и не работает на линуксе. Pillow запускается везде и ты сам контролируешь каждый пиксель.

Почему не записать экран терминала напрямую?

Можно. Но тогда ты зависишь от шрифтов системы, размера окна, рендеринга терминала и ещё кучи переменных. Здесь всё детерминировано: один и тот же content.py + timings.json дадут побайтово идентичный результат на любой машине.

Зачем реакционно-диффузная система для фона?

Потому что красиво. Альтернатива - статичный фон или что-то нарезанное из стока. Имхо достаточная причина для использования.

Можно ли сделать видео на английском?

Да. В content.py меняешь текст, в transcribe.py меняешь --language en. Всё остальное без изменений. В целом ограничений по языкам нет, главное, чтобы Faster Whisper large-v3 поддерживала.

Принимаются ли контрибуции?

Чел, ты рили? Какие нахер контрибуции в едва ли не щитпост репозиторий.

Если тебе руки занять нечем - у меня есть нормальные репозитории, где компетентные люди реально нужны:

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages