Проигрывает видео прямо в терминале символами: полублоками, шрифтом Брайля или в полном цвете. Со звуком.
| Режим | Как рисует | Детализация на ячейку |
|---|---|---|
bw |
полублоки ▀ ▄ █, чёрно-белый |
1×2 пикселя |
braille |
точки Брайля, градации серого или цвет (-c) |
2×4 пикселя |
color |
полублок ▀: цвет символа сверху, цвет фона снизу |
1×2 пикселя |
Цвет выводится в truecolor, если терминал его поддерживает (COLORTERM=truecolor), иначе в 256-цветной палитре xterm.
- Упорядоченный дизеринг по матрице Байера (
-d) вместо жёсткого порога - Градации серого в режиме Брайля (
-g), инверсия (-i), свой порог яркости (-t) - Звук: берёт файл рядом с видео, дорожку из самого видео или извлекает её через ffmpeg в кэш
- Ссылки на ролики без скачивания: yt-dlp отдаёт прямой поток, OpenCV читает его по сети
- Без аргументов показывает список видео из
~/Downloads,~/Movies,~/Desktopи текущей папки - Синхронизация по времени: не успевает отрисовать кадр — пропускает его, а не отстаёт от звука
git clone https://github.com/fewvar/cli-video.git
cd cli-video
python3 -m pip install -r requirements.txtДля звука и ссылок нужны ffmpeg и yt-dlp (например, brew install ffmpeg yt-dlp).
Звук сделан через afplay, поэтому работает только на macOS. На других системах видео играет без звука.
python3 cli_video.py # выбрать из найденных
python3 cli_video.py video.mp4 -m braille -d
python3 cli_video.py video.mp4 -m color -w 120 -f 15
python3 cli_video.py "https://..." -m braille -c| Флаг | Что делает |
|---|---|
-m |
режим: bw, braille, color |
-d |
дизеринг |
-g N |
градаций серого в braille (1 — чистый ч/б) |
-c |
цвет в braille |
-i |
инверсия |
-t N |
порог яркости 0–255 |
-w N |
максимальная ширина в символах |
-f N |
ограничение частоты кадров |
-a файл |
звук из отдельного файла |
-s |
без звука |
Узкое место не рендер, а терминал: цветной кадр весит около 80 КБ, и при 30 fps это ~2.4 МБ/с вывода. Стандартный Terminal.app на таком потоке задыхается, в kitty проблемы нет. Если тормозит — уменьшить ширину (-w) или частоту (-f).