Перейти к основному содержимому

Ascii Video

ASCII-видео: конвертация видео/аудио в цветной ASCII MP4/GIF.

Метаданные навыка​

ИсточникВстроенный (установлен по умолчанию)
Путьskills/creative/ascii-video
Платформыlinux, macos, windows

Справочник: полный SKILL.md​

к сведению

Ниже приведено полное описание навыка, которое VibeOS загружает при его активации. Агент видит эти инструкции, когда навык активен.

Конвейер производства ASCII-видео

Когда использовать​

Используйте по запросам пользователей: ASCII-видео, текстовое арт-видео, видео в стиле терминала, анимация из символов, ретро-текстовая визуализация, аудиовизуализатор в ASCII, конвертация видео в ASCII-арт, эффекты в стиле «Матрицы» или любой анимированный ASCII-вывод.

Что внутри​

Производственный конвейер для ASCII-арт-видео — любого формата. Преобразует видео/аудио/изображения/генеративный ввод в цветное ASCII-видео (MP4, GIF, последовательность изображений). Охватывает: конвертацию видео в ASCII, аудиореактивные музыкальные визуализаторы, генеративные ASCII-анимации, гибридное видео+аудио с реакцией, наложение текста/текстов песен, рендеринг в реальном времени в терминале.

Творческий стандарт​

Это визуальное искусство. ASCII-символы — это среда; кино — это стандарт.

Прежде чем написать хотя бы одну строку кода, сформулируйте творческую концепцию. Какое настроение? Какую визуальную историю это рассказывает? Что делает ЭТОТ проект непохожим на любое другое ASCII-видео? Запрос пользователя — это отправная точка; интерпретируйте его с творческой амбициозностью, а не буквальным пересказом.

Превосходство с первого рендера — это обязательное условие. Результат должен быть визуально впечатляющим без необходимости в итерациях доработки. Если что-то выглядит шаблонно, плоско или как «ASCII-арт, сгенерированный ИИ», это неправильно — переосмыслите творческую концепцию, прежде чем сдавать работу.

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

Будьте проактивно креативны. Расширяйте словарь навыка, когда этого требует проект. Если в справочниках нет того, что нужно для вашего замысла, создайте это. Включите как минимум один визуальный момент, о котором пользователь не просил, но который оценит — переход, эффект, цветовое решение, возвышающее всё произведение.

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

Насыщенно, многослойно, продуманно. Каждый кадр должен вознаграждать за просмотр. Никогда не используйте плоский чёрный фон. Всегда многокомпонентная композиция. Всегда вариативность по сценам. Всегда осмысленный цвет.

Режимы​

РежимВводВыводСправочник
Видео в ASCIIВидеофайлASCII-воссоздание исходного материалаreferences/inputs.md § Выборка видео
АудиореактивныйАудиофайлГенеративная визуализация на основе аудиохарактеристикreferences/inputs.md § Анализ аудио
ГенеративныйНет (или параметры сида)Процедурная ASCII-анимацияreferences/effects.md
ГибридныйВидео + аудиоASCII-видео с аудиореактивными наложениямиОба справочника по вводу
Текст/тексты песенАудио + текст/SRTТекст с привязкой по времени и визуальными эффектамиreferences/inputs.md § Текст/Тексты песен
Озвучка TTSЦитаты текста + TTS APIОзвученное видео-отзыв/цитата с печатным текстомreferences/inputs.md § Интеграция TTS

Стек​

Один самодостаточный Python-скрипт на проект. GPU не требуется.

СлойИнструментНазначение
ЯдроPython 3.10+, NumPyМатематика, операции с массивами, векторизованные эффекты
СигналыSciPyБПФ, обнаружение пиков (аудиорежимы)
ИзображенияPillow (PIL)Растеризация шрифтов, декодирование кадров, ввод/вывод изображений
Видео ввод/выводffmpeg (CLI)Декодирование ввода, кодирование вывода, мультиплексирование аудио
Параллелизмconcurrent.futuresN воркеров для пакетного/клипового рендеринга
TTSElevenLabs API (опционально)Генерация голосовых клипов
ОпциональноOpenCVВыборка кадров видео, обнаружение границ

Архитектура конвейера​

Каждый режим следует одному и тому же 6-этапному конвейеру:

ВВОД → АНАЛИЗ → СЦЕНА_ФН → ТОНОМАППИНГ → ЗАТЕНЕНИЕ → КОДИРОВАНИЕ
  1. ВВОД — Загрузка/декодирование исходного материала (кадры видео, аудиосэмплы, изображения или ничего)
  2. АНАЛИЗ — Извлечение покадровых характеристик (аудиодиапазоны, яркость/границы видео, векторы движения)
  3. СЦЕНА_ФН — Функция сцены рендерит на пиксельный холст (uint8 H,W,3). Составляет несколько символьных сеток через _render_vf() + режимы наложения пикселей. См. references/composition.md
  4. ТОНОМАППИНГ — Адаптивная нормализация яркости на основе процентилей. См. references/composition.md § Адаптивный тономаппинг
  5. ЗАТЕНЕНИЕ — Постобработка через ShaderChain + FeedbackBuffer. См. references/shaders.md
  6. КОДИРОВАНИЕ — Передача сырых RGB-кадров в ffmpeg для кодирования H.264/GIF

Творческое направление​

Эстетические измерения​

ИзмерениеВариантыСправочник
Палитра символовГрадиенты плотности, блочные элементы, символы, письменности (катакана, греческий, руны, брайль), проектно-специфичныеarchitecture.md § Палитры
Цветовая стратегияHSV, OKLAB/OKLCH, дискретные RGB-палитры, автогенерируемая гармония, монохром, температураarchitecture.md § Цветовая система
Фоновая текстураСинусоидальные поля, шум fBM, искажение домена, вороной, реакционно-диффузионные, клеточные автоматы, видеоeffects.md
Основные эффектыКольца, спирали, туннель, вихрь, волны, интерференция, северное сияние, огонь, SDF, странные аттракторыeffects.md
ЧастицыИскры, снег, дождь, пузыри, руны, орбиты, стаи бойдов, последователи потокового поля, следыeffects.md § Частицы
Настроение шейдераРетро-ЭЛТ, чистый современный, глитч-арт, кинематографичный, мечтательный, индустриальный, психоделическийshaders.md
Плотность сеткиxs(8px) через xxl(40px), смешанная послойноarchitecture.md § Система сеток
Координатное пространствоДекартово, полярное, мозаичное, повёрнутое, «рыбий глаз», Мёбиус, искажённое доменомeffects.md § Трансформации
Обратная связьТуннель зума, радужные следы, призрачное эхо, вращающаяся мандала, эволюция цветаcomposition.md § Обратная связь
МаскированиеКруг, кольцо, градиент, текстовый трафарет, анимированная диафрагма/шторка/растворениеcomposition.md § Маскирование
ПереходыКроссфейд, шторка, растворение, глитч-разрез, диафрагма, раскрытие на основе маскиshaders.md § Переходы

Посекционная вариативность​

Никогда не используйте одну и ту же конфигурацию для всего видео. Для каждой секции/сцены:

  • Другой фоновый эффект (или скомпонуйте 2-3)
  • Другая палитра символов (соответствующая настроению)
  • Другая цветовая стратегия (или хотя бы другой оттенок)
  • Варьируйте интенсивность шейдера (больше свечения на пиках, больше зернистости в тихих моментах)
  • Другие типы частиц, если частицы активны

Проектно-специфичное изобретение​

Для каждого проекта изобретите как минимум одно из:

  • Пользовательская палитра символов, соответствующая теме
  • Пользовательский фоновый эффект (комбинируйте/модифицируйте существующие блоки)
  • Пользовательская цветовая палитра (дискретный набор RGB, соответствующий бренду/настроению)
  • Пользовательский набор символов для частиц
  • Новый переход между сценами или визуальный момент

Не просто выбирайте из каталога. Каталог — это словарный запас; вы пишете стихотворение.

Рабочий процесс​

Шаг 1: Творческое видение​

Прежде чем писать код, сформулируйте творческую концепцию:

  • Настроение/атмосфера: Что должен чувствовать зритель? Энергично, медитативно, хаотично, элегантно, зловеще?
  • Визуальная история: Что происходит на протяжении видео? Нарастание напряжения? Трансформация? Растворение?
  • Цветовой мир: Тёплый/холодный? Монохромный? Неоновый? Землистые тона? Какой доминирующий оттенок?
  • Символьная текстура: Плотные данные? Редкие звёзды? Органические точки? Геометрические блоки?
  • Что делает ЭТО особенным: Что делает этот проект уникальным?
  • Эмоциональная дуга: Как развиваются сцены? Начало с энергией, нарастание к кульминации, разрешение?

Сопоставьте запрос пользователя с эстетическими выборами. «Чилл-лоуфай визуализатор» требует совершенно другого подхода, чем «глитч-киберпанк поток данных».

Шаг 2: Технический дизайн​

  • Режим — какой из 6 режимов выше
  • Разрешение — альбомное 1920x1080 (по умолчанию), портретное 1080x1920, квадратное 1080x1080 @ 24fps
  • Определение оборудования — автоопределение ядер/ОЗУ, установка профиля качества. См. references/optimization.md
  • Секции — сопоставление временных меток с функциями сцен, каждая со своей конфигурацией эффекта/палитры/цвета/шейдера
  • Формат вывода — MP4 (по умолчанию), GIF (640x360 @ 15fps), последовательность PNG

Шаг 3: Создание скрипта​

Один Python-файл. Компоненты (со справочниками):

  1. Определение оборудования + профиль качества — references/optimization.md
  2. Загрузчик ввода — зависит от режима; references/inputs.md
  3. Анализатор характеристик — аудио БПФ, яркость видео или синтетический
  4. Сетка + рендерер — многоплотностные сетки с кэшем растров; references/architecture.md
  5. Палитры символов — несколько на проект; references/architecture.md § Палитры
  6. Цветовая система — HSV + дискретный RGB + генерация гармонии; references/architecture.md § Цвет
  7. Функции сцен — каждая возвращает canvas (uint8 H,W,3); references/scenes.md
  8. Тонмаппинг — адаптивная нормализация яркости; references/composition.md
  9. Конвейер шейдеров — ShaderChain + FeedbackBuffer; references/shaders.md
  10. Таблица сцен + диспетчер — время → функция сцены + конфигурация; references/scenes.md
  11. Параллельный кодировщик — рендеринг клипов N воркерами через каналы ffmpeg
  12. Главная — оркестровка полного конвейера

Шаг 4: Проверка качества​

  • Сначала тестовые кадры: отрендерите одиночные кадры в ключевые моменты времени до полного рендера
  • Проверка яркости: canvas.mean() > 8 для всего ASCII-контента. Если темно, уменьшите гамму
  • Визуальная связность: все ли сцены ощущаются частью одного видео?
  • Проверка творческого видения: соответствует ли результат концепции из Шага 1? Если выглядит шаблонно, вернитесь назад

Критические замечания по реализации​

Яркость — используйте tonemap(), а не линейные множители​

Это проблема №1 в визуальном плане. ASCII на чёрном фоне по своей природе тёмный. Никогда не используйте множители canvas * N — они обрезают светлые участки. Используйте адаптивный тономаппинг:

def tonemap(canvas, gamma=0.75):
f = canvas.astype(np.float32)
lo, hi = np.percentile(f[::4, ::4], [1, 99.5])
if hi - lo < 10: hi = lo + 10
f = np.clip((f - lo) / (hi - lo), 0, 1) ** gamma
return (f * 255).astype(np.uint8)

Конвейер: scene_fn() → tonemap() → FeedbackBuffer → ShaderChain → ffmpeg

Посценная гамма: по умолчанию 0.75, соляризация 0.55, постеризация 0.50, яркие сцены 0.85. Используйте режим наложения screen (не overlay) для тёмных слоёв.

Высота ячейки шрифта​

macOS Pillow: textbbox() возвращает неправильную высоту. Используйте font.getmetrics(): cell_height = ascent + descent. См. references/troubleshooting.md.

Взаимная блокировка канала ffmpeg​

Никогда не используйте stderr=subprocess.PIPE с долго работающим ffmpeg — буфер заполняется при 64 КБ и вызывает взаимную блокировку. Перенаправляйте в файл. См. references/troubleshooting.md.

Совместимость шрифтов​

Не все символы Unicode отображаются во всех шрифтах. Проверяйте палитры при инициализации — рендерьте каждый символ, проверяйте на пустой вывод. См. references/troubleshooting.md.

Архитектура поклипового рендеринга​

Для сегментированных видео (цитаты, сцены, главы) рендерьте каждый как отдельный клип для параллельного рендеринга и выборочного перерендера. См. references/scenes.md.

Целевые показатели производительности​

КомпонентБюджет
Извлечение характеристик1-5 мс
Функция эффекта2-15 мс
Рендер символов80-150 мс (узкое место)
Конвейер шейдеров5-25 мс
Итого~100-200 мс/кадр

Справочники​

ФайлСодержание
references/architecture.mdСистема сеток, пресеты разрешений, выбор шрифта, палитры символов (20+), цветовая система (HSV + OKLAB + дискретный RGB + генерация гармонии), вспомогательная функция _render_vf(), класс GridLayer
references/composition.mdРежимы наложения пикселей (20 режимов), blend_canvas(), многокомпонентная композиция, адаптивный tonemap(), FeedbackBuffer, PixelBlendStack, система маскирования/трафаретов
references/effects.mdСтроительные блоки эффектов: генераторы полей значений, поля оттенков, шум/fBM/искажение домена, вороной, реакционно-диффузионные, клеточные автоматы, SDF, странные аттракторы, системы частиц, координатные трансформации, временная когерентность
references/shaders.mdShaderChain, диспетчеризация _apply_shader_step(), каталог из 38 шейдеров, аудиореактивное масштабирование, переходы, пресеты тонирования, кодирование выходного формата, терминальный рендеринг
references/scenes.mdПротокол сцен, класс Renderer, таблица SCENES, render_clip(), синхронизированная по битам нарезка, параллельный рендеринг, паттерны проектирования (иерархия слоёв, направленные дуги, визуальные метафоры, композиционные техники), полные примеры сцен на всех уровнях сложности, чеклист дизайна сцен
references/inputs.mdАнализ аудио (БПФ, диапазоны, биты), выборка видео, конвертация изображений, текст/тексты песен, интеграция TTS (ElevenLabs, назначение голосов, аудиомикширование)
references/optimization.mdОпределение оборудования, профили качества, векторизованные паттерны, параллельный рендеринг, управление памятью, бюджеты производительности
references/troubleshooting.mdЛовушки широковещания NumPy, подводные камни режимов наложения, многопроцессорность/пиклинг, диагностика яркости, проблемы ffmpeg, проблемы шрифтов, распространённые ошибки

Творческое отклонение (используйте только по запросу пользователя на экспериментальный/креативный/уникальный вывод)​

Если пользователь просит креативный, экспериментальный, удивительный или нетрадиционный вывод, выберите стратегию, которая лучше всего подходит, и обоснуйте её шаги ДО генерации кода.

  • Принудительные связи — когда пользователь хочет вдохновения из другой области («сделай это органичным», «индустриальная эстетика»)
  • Концептуальное смешение — когда пользователь называет две вещи для объединения («океан встречает музыку», «космос + каллиграфия»)
  • Косвенные стратегии — когда пользователь максимально открыт («удиви меня», «то, чего я никогда не видел»)

Принудительные связи​

  1. Выберите область, не связанную с визуальной целью (погодные системы, микробиология, архитектура, гидродинамика, ткачество)
  2. Перечислите её ключевые визуальные/структурные элементы (эрозия → постепенное раскрытие; митоз → разделяющееся удвоение; ткачество → переплетающиеся паттерны)
  3. Сопоставьте эти элементы с ASCII-символами и паттернами анимации
  4. Синтезируйте — как выглядят «эрозия» или «кристаллизация» в символьной сетке?

Концептуальное смешение​

  1. Назовите два различных визуальных/концептуальных пространства (например, океанские волны + нотная запись)
  2. Сопоставьте соответствия (гребни = высокие ноты, впадины = паузы, пена = стаккато)
  3. Смешивайте выборочно — сохраните самые интересные соответствия, отбросьте натянутые
  4. Развивайте эмерджентные свойства, существующие только в смешении

Косвенные стратегии​

  1. Вытяните одну: «Почти ошибку как скрытое намерение» / «Используй старую идею» / «Что бы сделал твой ближайший друг?» / «Подчеркни недостатки» / «Переверни вверх дном» / «Только часть, не целое» / «Наоборот»
  2. Интерпретируйте директиву в контексте текущей задачи ASCII-анимации
  3. Примените латеральное озарение к визуальному дизайну перед написанием кода