Конвертер видео в ASCII-арт с поддержкой загрузки видео по ссылке.
- Конвертация видео в ASCII-арт в реальном времени
- Поддержка загрузки видео по HTTP/HTTPS ссылке
- Многопоточная обработка (обработка и воспроизведение в отдельных потоках)
- Настраиваемая ширина ASCII-изображения
- Кроссплатформенность (Windows/Linux)
- Обработка ошибок и валидация входных данных
- RAII и ООП архитектура
- OpenCV (https://opencv.org/releases/)
- C++17 или выше
- curl (для загрузки видео по ссылке)
- Windows: включен в Windows 10/11 или скачать с https://curl.se/windows/
- Linux: sudo apt-get install curl (Ubuntu/Debian) или sudo yum install curl (CentOS/RHEL)
# Простая сборка
make
# Сборка в режиме отладки
make BUILD_TYPE=Debug
# Очистка
make clean
# Справка
make help# Создание директории сборки
mkdir build && cd build
# Конфигурация
cmake ..
# Сборка
cmake --build .
# Или одной командой
cmake -B build && cmake --build build# Linux
g++ -std=c++17 src/*.cpp -Iinclude -o video2ASCII \
$(pkg-config --cflags --libs opencv4) -pthread
# Windows (MinGW)
g++ -std=c++17 src/*.cpp -Iinclude -o video2ASCII.exe \
-lopencv_world -pthread# Локальный файл
./video2ASCII video.mp4
# Видео по ссылке
./video2ASCII https://example.com/video.mp4
# С настройкой ширины
./video2ASCII -w 300 video.mp4- -w, --width <число> - Ширина ASCII-изображения (по умолчанию: 250)
- -h, --help - Показать справку
# Воспроизведение локального видео
./video2ASCII my_video.mp4
# Загрузка и воспроизведение видео по ссылке
./video2ASCII https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4
# Увеличенная ширина для лучшего качества
./video2ASCII -w 400 video.mp4Проект использует принципы:
- RAII - автоматическое управление ресурсами через деструкторы
- ООП - классы VideoProcessor, AsciiCache, VideoDownloader
- DRY - переиспользование кода через классы
- KISS - простота реализации
- SOLID - разделение ответственности между классами
- VideoProcessor - основной класс для обработки видео (RAII)
- AsciiCache - кеширование преобразования пикселей в ASCII
- VideoDownloader - загрузка видео по URL
- Многопоточность: обработка кадров и их воспроизведение выполняются параллельно
- Кеширование: предварительный расчет индексов ASCII символов
- Оптимизация памяти: резервирование памяти для строк ASCII-кадров
- Автоматическая очистка: временные файлы удаляются после использования
- Высота ASCII-изображения рассчитывается автоматически с сохранением пропорций
- Коэффициент высоты: 0.5 (для лучшей читаемости в консоли)
- Для корректной работы требуется терминал с поддержкой ANSI escape-последовательностей
