经常看抖音(抖音)的人会经常看到这样的短视频、黑客背景电脑。上面打了几个代码,出现了非常绚丽的画面,现在我们来找效果,进一步查看内部实现细节。(约翰f肯尼迪)。
比如某个视频是这样的(点击执行文件后出现很多符号组成的一个美女在跳舞的视频)原理其实非常简单,首先找到任意一个视频,将他转换成很多个ascii字符码(如下图)
这是一个名为 bad apple 的视频通过转码 得到的txt 文件,大家都能看到 txt的文件名是有规律的。懂一些技术的小伙伴,看到这里应该就知道怎么做的了。(视频转化ascii 文本是可以在线生成的,有现成的网站。后来长时间没弄这个后忘了网站的地址了,本来想找到分享给大家的,恕在下无能没找到,如果有人找到的话欢迎分享给我。当然你有技术的话可以自己写一个,原理是将视频按固定帧截取后成图片后顺序转为ascii 保存起来 )
没错,接下来可以以任何语言,来实现这个字符动画功能,下面我展示一下用C语言写的代码
#include<; #include<; #include<windows.h> #include <mm; #pragma comment(lib, "WINMM.LIB") #include<; #include<; int main() { void recursur(); int i = 0, caf = 33; FILE *fp ; clock_t stime = 0, ftime = 0; char buf[1920], seat[]="out\\BA (0000).txt", ai[5]; printf("-----Bad Apple ASCII art player-----\nPress Enter to play.\n"); getchar(); system("cls"); PlaySound("BadA;, NULL, SND_FILENAME | SND_ASYNC); stime = clock(); while(i <= 6570) { if(i % 30 == 0) { caf = 43; } else { caf = 33; } strcpy(seat, "out\\BA ("); sprintf(ai, "%d", i); strcat(seat, ai); strcat(seat, ").txt"); ftime = clock(); if((ftime - stime) >= caf) { i++; fp = fopen(seat, "r"); fread(buf, sizeof(buf), 1, fp); buf[1920] = '\0'; fclose(fp); fprintf(stdout, "%s", buf); fprintf(stdout, "Frame:%d", i); stime += caf; recursur(); } } system("cls"); printf("-----Bad Apple ASCII art player-----\nThanks for watching!\nMade by chuan.\n\n"); printf("Press Enter to Exit.\n"); getchar(); return 0; } void recursur() { HANDLE hout; COORD coord; coord.X = 0; coord.Y = 0; hout = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hout,coord); }一共只有62行代码就能实现这个功能了,代码中主要就是循环读取txt文件,打印到控制台的功能,其中还调用了 playsound函数来播放 badapple背景音乐,达到更好的效果。
运行效果: