- Python3
- PortAudio (僅用來提供音訊功能的安裝支持)
- FFmpeg (僅用來提供音訊功能的安裝支持)
標準安裝:
$ pip3 install video-to-ascii
安裝時添加音訊功能:
$ pip3 install video-to-ascii --install-option="--with-audio"
只需要在你的終端機中執行 video-to-ascii
命令:
$ video-to-ascii -f myvideo.mp4
--strategy
允許選擇影片輸出時的渲染策略。
-o --output
匯出影片渲染後的輸出結果為腳本檔案,用以分享給他人使用。
-a --with-audio
如果安裝時帶有音訊功能,你可以使用這個選項來在透過 ASCII 字元渲染影片時播放音訊。
任何的影片皆由一系列的影格(或稱為幀,frames)所組成,並透過特定的幀率(frame rate)進行播放。
由於終端機有特定的行數與列數,我們必須調整影片大小來適配終端機的大小限制。
為了使每一個完整影格能夠正確地被視覺化,我們必須調整 影格高度(frame height) 來適配 終端行數(terminal rows),並避免使用超出 終端列數(terminal columns) 的 字元(characters)。
在選擇一個字元(character)來表示一個像素(pixel)時,我們需要測量該像素顏色在影格中的相關性,並使用簡化版本的光度函數(luminosity function)來根據色度空間中的 相對發光亮度(relative luminance) 選擇最適當的字元。
綠光對於人體的視覺強度感知最高,而藍光最少。
這個函數會返回一個介於 0 到 255 之間的整數,我們根據密度分配字元,用以在色彩感知度較高(較高的數值)的區塊顯示較大的塗色區塊。 顯示顏色較深區域的
CHARS_LIGHT = [' ', ' ', '.', ':', '!', '+', '*', 'e', '$', '@', '8']
CHARS_COLOR = ['.', '*', 'e', 's', '@']
CHARS_FILLED = ['░', '▒', '▓', '█']
終端機所能支援的色彩範圍是我們需要解決的問題。現代的終端機最多支援 256 色,因此我們需要找到與原來像素的 16 位元顏色或 24 位元顏色最接近的 8 位元顏色,我們稱這 256 個顏色為 ANSI 色。
最後,我們便可以得到對於每個像素而言最適當的字元與色彩。
這個項目的存在要感謝所有貢獻者。[Contribute].
成為財務貢獻者,並幫助我們維持我們的社群。[Contribute].
或者是 贊助我一杯咖啡。
與您的組織一起支持此項目。您的組織徽章將顯示在此處,並帶有指向您網站的鏈接。[Contribute]