Skip to content

Latest commit

 

History

History
146 lines (89 loc) · 6.86 KB

README_zh-TW.md

File metadata and controls

146 lines (89 loc) · 6.86 KB

Logo

一款用來在終端機中使用 ASCII 字元播放影片的 Python 套件。

Financial Contributors on Open Collective PyPI version Maintainability contributions welcome HitCount

Screenshot

文件翻譯

使用需求

  • 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

允許選擇影片輸出時的渲染策略。

Render Strategies

-o --output 匯出影片渲染後的輸出結果為腳本檔案,用以分享給他人使用。

Exporting

-a --with-audio

如果安裝時帶有音訊功能,你可以使用這個選項來在透過 ASCII 字元渲染影片時播放音訊。

如何運作

任何的影片皆由一系列的影格(或稱為幀,frames)所組成,並透過特定的幀率(frame rate)進行播放。

Video Frames

由於終端機有特定的行數與列數,我們必須調整影片大小來適配終端機的大小限制。

Terminal

為了使每一個完整影格能夠正確地被視覺化,我們必須調整 影格高度(frame height) 來適配 終端行數(terminal rows),並避免使用超出 終端列數(terminal columns)字元(characters)

Resizing

在選擇一個字元(character)來表示一個像素(pixel)時,我們需要測量該像素顏色在影格中的相關性,並使用簡化版本的光度函數(luminosity function)來根據色度空間中的 相對發光亮度(relative luminance) 選擇最適當的字元。

綠光對於人體的視覺強度感知最高,而藍光最少。

這個函數會返回一個介於 0 到 255 之間的整數,我們根據密度分配字元,用以在色彩感知度較高(較高的數值)的區塊顯示較大的塗色區塊。 顯示顏色較深區域的

CHARS_LIGHT 	= [' ', ' ', '.', ':', '!', '+', '*', 'e', '$', '@', '8']
CHARS_COLOR 	= ['.', '*', 'e', 's', '@']
CHARS_FILLED    = ['░', '▒', '▓', '█']

終端機所能支援的色彩範圍是我們需要解決的問題。現代的終端機最多支援 256 色,因此我們需要找到與原來像素的 16 位元顏色或 24 位元顏色最接近的 8 位元顏色,我們稱這 256 個顏色為 ANSI 色

The Mapping of RGB and ANSI Colors

8 Bits Color Table

最後,我們便可以得到對於每個像素而言最適當的字元與色彩。

Frame Image by Characters

貢獻者

程式貢獻者

這個項目的存在要感謝所有貢獻者。[Contribute].

財務貢獻者

成為財務貢獻者,並幫助我們維持我們的社群。[Contribute].

或者是 贊助我一杯咖啡

個人贊助

機構贊助

與您的組織一起支持此項目。您的組織徽章將顯示在此處,並帶有指向您網站的鏈接。[Contribute]