最近GitHub上有个很好玩的项目,叫做video-to-ascii。这是一个简单的python包,可以使用字符作为像素在终端中播放视频。
安装:
pip3 install video-to-ascii
用法:
$ video-to-ascii -f myvideo.mp4
--strategy 可以通过增加参数选择不同的模式
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9SUEdCcGhid0p3M2liVWlhSGtCeUVZbDB6cTc0WUcwWDNYclFsUHk1ZW9FRVhNY0xRY0ZjcTNXdDgwaGlidXJGbUJmeVhFTVBOQ095Vms2TUp0aWNJNDF0dkEvNjQwP3d4X2ZtdD1qcGVn?x-oss-process=image/format,png)
-o --output将渲染输出导出到bash文件以与某人共享
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9SUEdCcGhid0p3M2liVWlhSGtCeUVZbDB6cTc0WUcwWDNYNmdSOVdKaDBCaWE0OFM3QWliczR1emdpYWNVajE2d2hGaWMxVFNuTVZJZWZMVTR2Q1hvczlpY1RLaWJBLzY0MD93eF9mbXQ9anBlZw?x-oss-process=image/format,png)
作者也说了实现原理。大意如下:
每个视频由一组以特定帧速率播放的帧组成。
当选择一个字符来表示一个像素时,我们需要测量该像素在帧中的颜色的相关性,然后我们可以根据色度空间中的相对亮度选择最合适的字符,使用光度函数的简化版本。
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9SUEdCcGhid0p3M2liVWlhSGtCeUVZbDB6cTc0WUcwWDNYRnBTem04aWFyaWNuT1NLWXRNWTB3aWEwQjBIaWFyelRuSDJwaGNNcXZndnN3NmU2WElDaWNmMWdqR1EvNjQwP3d4X2ZtdD1qcGVn?x-oss-process=image/format,png)
绿光对人类感知的强度贡献最大,蓝光最少。
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9SUEdCcGhid0p3M2liVWlhSGtCeUVZbDB6cTc0WUcwWDNYTmVoaWJ4N0tuZnFDaWFxWUxzRGZQcXRwaWNibW83bVlaZjJudlBsaWNvbWxDMThQSWRteWljS0U0VncvNjQwP3d4X2ZtdD1qcGVn?x-oss-process=image/format,png)
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9SUEdCcGhid0p3M2liVWlhSGtCeUVZbDB6cTc0WUcwWDNYQVRVczZpYWZZSExCRzRHc0ZCbVRPTTNzc1BDbk9pYWVqR0VETndPd092bUZwaWFwT2liTDhyaWJpYjlRLzY0MD93eF9mbXQ9anBlZw?x-oss-process=image/format,png)
最后,当把它们放在一起时,我们将为每个像素和新颜色提供适当的字符。
一些参数
from . import player
def main():
import argparse
CLI_DESC = "It is a simple python package to play videos in the terminal using colored characters as pixels or other usefull outputs"
EPILOG = ("\033[1;37mThanks for trying video-to-ascii!\033[0m")
PARSER = argparse.ArgumentParser(prog='video-to-ascii', description=CLI_DESC, epilog=EPILOG)
PARSER.add_argument('-f', '--file', type=str, dest='file', help='input video file', action='store', required=True)
PARSER.add_argument('--strategy', default='ascii-color', type=str, dest='strategy',
choices=["ascii-color", "just-ascii", "filled-ascii"], help='choose an strategy to render the output', action='store')
PARSER.add_argument('-o', '--output', type=str, dest='output', help='output file to export', action='store')
PARSER.add_argument('-a','--with-audio', dest='with_audio', help='play audio track', action='store_true')
ARGS = PARSER.parse_args()
player.play(ARGS.file, strategy=ARGS.strategy, output=ARGS.output, play_audio=ARGS.with_audio)
if __name__ == '__main__':
main()
下面是一部小视频,猜猜看是啥 ![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9yZXMud3gucXEuY29tL21wcmVzL2h0bWxlZGl0aW9uL2ltYWdlcy9pY29uL2NvbW1vbi9lbW90aW9uX3BhbmVsL2Vtb2ppX3d4LzJfMDIucG5n?x-oss-process=image/format,png)
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9SUEdCcGhid0p3M2liVWlhSGtCeUVZbDB6cTc0WUcwWDNYcFRUYXhzSmhjNkhKWmJGRldtVFlpYkM3empvQ0l4RFFZOWpRaWFZT1hrSG5lSzczc0g3aGliUmt3LzY0MD93eF9mbXQ9anBlZw?x-oss-process=image/format,png)
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9SUEdCcGhid0p3M2liVWlhSGtCeUVZbDB6cTc0WUcwWDNYVWtZWndIVWljZks0TlZCc2ZtR0lSd0gwV3dQaWFHY0c1aWJMS3pRSlc3WlJmeWVTMGxDOTZWWFh3LzY0MD93eF9mbXQ9anBlZw?x-oss-process=image/format,png)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)