少女祈祷中...

这个活儿非常简单,大家都可以尝试一下

第一步:用转换格式的方法把视频换成bmp位图的模式

第二步:用前人的成果(ASC工具)将图片用一种特殊的方式转换成.txt的文本文件

第三步:快速清屏输出:

Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include<string.h>
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include <mmsystem.h>
#pragma comment(lib, "WINMM.LIB")
#include <iostream>
using namespace std;

int main()
{
void recursur();
//函数声明
int i = 0, caf = 33;
char p = 0;
FILE *fp;
clock_t stime = 0, ftime = 0;
char buf[1921] = {}, seat[] = "output\\test(0).txt", ai[10];
//buf是输出的字符串,seat是打开的文件名
printf("-----test art player-----\nPress Enter to play.\nSource:av706from bilibili\n");
getchar();
system("cls");
PlaySound("test.wav", NULL, SND_FILENAME SND_ASYNC);
//输入声音
stime = clock();
while (i <= 6568)// 
{
//6568是输出的总帧数,视情况而定
if (i % 30 == 0)
{
caf = 43;
}
else
{
caf = 33;
}
//设定刷新时间
strcpy(seat, "output\\test(");
sprintf(ai, "%d", i);
strcat(seat, ai);
strcat(seat, ").txt");
//把seat设定成要打开的文件的形式
ftime = clock();
if ((ftime - stime) >= caf)
{
//简单而言,就是该程序从启动到函数调用占用CPU的时间。这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)
//如果系统运行的时间还没到下一次运行时要清屏的时间,那if不进入,也就不会清屏,继续while循环
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("----- art player-----\nThanks for watching!\nMade by Sukuna.\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);
}

说一下recursur函数把

HANDLE 是一种句柄变量,类似于void*这种类型,COORD是cmd窗口光标类型,把光标设置成(0,0)
接着hout赋值为SED_OUTPUT_HANDLE
最后一个函数就把光标的位置重新设置一下,光标设置为0

HANDLE GetStdHandle( DWORD nStdHandle );GetStdHandle()返回标准的输入、输出或错误的设备的句柄,也就是获得输入、输出/错误的屏幕缓冲区的句柄。
STD_OUTPUT_HANDLE表示标准输出的句柄

SetConsoleCursorPosition是一个window api;作用是设置控制台(cmd)光标位置

这个函数是一个模版,记得就行