CXK(任意视频转成字符播放)是一款>CXK视频转字符工具免费下载>,支持很多类型得视频文件播放,操作简单,通过CXK视频转字符工具用户能够把任何可以动的视频转换成字符串,从而营造出一种别样的感觉。
今天给大家带来的是如何在命令行中播放视频,或者说把视频转换成字符播放,那到底是个什么东西嘞
可以看到,我们用字符描绘出了运球自如的坤坤,这有啥用?这最大的作用啊,就是护眼,我用这个看坤坤视频100遍,眼睛还没瞎,是不是效果很好?{:1_924:}额,好吧,确实没啥用,图一乐了。。
那这是怎么实现的呢,难道是我这个坤坤的真爱粉一个字一个字的码出来的吗?:keai
这密密麻麻的字符这么多,显然手码不太现实,其实是用python+opencv实现的{:1_918:}
首先大家都知道,视频可以看做是由许许多多张图片组成的,当每秒展示的图片足够多时,视频也就动起来了,那么我们要做的就是把视频中的每张图用字符表示出来,视频也就字符化了;
那么我们要解决的问题就是,把每张图片用字符表示:众所周知,图片是由像素点构成的,每个像素又由三种颜色(红绿蓝)组成各种色彩的小点儿,许多这样的像素小点儿就构成了一幅彩色的坤坤,当我们把每个这样的小点儿用字符表示时,那么视频也就字符化了;
那么我们要解决的问题变成了,把每个像素对应成一个字符表示出来,由于我们的自符是没有颜色的,所以转换之前我们只保留每个像素的明暗程度即可表示图像的轮廓,即把彩色图像转换成灰度图像。
那么现在的问题就变成了把每个像素的明暗程度用字符表示,比如亮一些的用“#”字符表示,暗一些的用“。”字符表示。众所周知{:1_918:},计算机中像素的明暗程度是由数字的大小表示的,其实我们人眼看起来的亮暗对计算机来说只是数字的大小,比如当像素点的值为255时,这个像素就比较白(亮),当像素点的值为0时,这个像素就比较白(暗)。
现在我们捋一下:数组(数字)代表像素,像素组成图像,图像组成视频,只要我们把数字映射成字符,那么坤坤也就字符化了,下边这个经典的结构图更清晰些:
对于一张8位图,亮度范围为0-255,由于只需要明暗信息,上图的三个数组只保留一个然后将其中的数字用字符对应,比如32对应“空格”字符,65对应“A”字符,97对应“a”字符,等等,这是啥,没错,ASCII表啊!!现成的映射关系!!我们只要将这些数字用chr(x)直接输出就好了,由于ASCII的字符数比较少不够256个,而且有些字符长短不齐甚至无法打印,我们只截取一部分表格,比如这样chr(int(x / 30 +32))。下面是代码。
将要转换的视频命名为‘video.mp4’并和py文件放在同一目录下,打开命令行,将字体设置为点阵字体,调节的尽量小(我的是6x12),窗口尽量大最好全屏,标题栏右键属性可以调节,最后运行.py文件即可,需要opencv环境,加载时间取决于电脑性能。
最后我还用tkinter做了exe,不想麻烦的直接下载这个就好,无需运行环境随便玩,打开后浏览到想播放的视频即可,为了避免等待时间过长,我设置了对于长视频只转换大概前4分钟。
有人说想看GIF,那你能看出图中的都是谁吗: