要求
- Python3
- PortAudio(仅安装音频支持版本时需要)
- FFmpeg(仅安装音频支持版本时需要)
- Linux或MacOS...目前只支持这些
安装
标准安装
$ 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
将渲染输出导出到bash文件以便与他人分享。
-a --with-audio
如果安装了音频支持版本,可以使用此选项在渲染视频ASCII字符时播放音频轨道。
工作原理
每个视频都由一组以特定帧率播放的帧组成。
由于终端有特定的行数和列数,我们必须调整视频大小以适应终端大小的限制。
为了正确显示整个帧,我们需要调整帧高度以匹配终端行数,避免使用超过终端列数的字符。
在选择表示像素的字符时,我们需要衡量该像素颜色在帧中的相关性。基于此,我们可以根据色度空间中的相对亮度选择最合适的字符,使用简化版的亮度函数。
绿光对人类感知的亮度贡献最大,蓝光贡献最小。
此函数返回一个0到255范围内的整数,我们根据密度分配字符,以在颜色更强烈(最高值)的区域显示更多的彩色表面。
CHARS_LIGHT = [' ', ' ', '.', ':', '!', '+', '*', 'e', '$', '@', '8']
CHARS_COLOR = ['.', '*', 'e', 's', '@']
CHARS_FILLED = ['░', '▒', '▓', '█']
终端支持的有限颜色范围是我们需要考虑的一个问题。现代终端支持多达256种颜色,因此我们需要找到与原始16位或24位颜色像素最接近的8位颜色,我们称这组256种颜色为ANSI颜色。
最后,当把所有这些结合在一起时,我们将为每个像素获得一个适当的字符和一个新的颜色。
贡献者
代码贡献者
这个项目的存在要归功于所有做出贡献的人。[贡献]。
财务贡献者
成为财务贡献者,帮助我们维持我们的社区。[贡献]。
或者只是给我买杯咖啡。
个人
组织
用你的组织支持这个项目。你的logo将出现在这里,并链接到你的网站。[贡献]