C/C++的文件读取展示的视频播放
文章目录- 前言
- 一、准备工具
- 二、编写代码前需要准备的一些素材
- 1.处理素材
- 2.编写代码
- 总结
前言
作者是先通过剪映,截取视频每一帧(应该没有每一帧)的图片通过一个叫Ascgen2的软件,将图片转换成相应的组成的图形。然后通过c语言的文件读写,将处理好的素材文件打印到控制台(看到这是不是觉得有点low了),但是要通过截取每一帧的图片并且裁剪转换成对应的字符素材,还是很肝了吧。
一、准备工具
1、支持c、c++的编译器
2、剪映(或者任何可以编辑视频的软件)
3、Ascgen2(作者找到的将图片转换为字符的软件)
1、寻找合适的资源视频。(建议不要找太长的,除非你肝上长了个人,或者你会写脚本自动化)
2、利用视频编辑器,裁剪出每一帧的图像。(也可也每两帧一张图)
注意:图片一定要重命名并且排好序,便于后序使用。
3、利用Ascgen2软件将获得的图片转换为字符。
下载Ascgen2->打开Ascgen2->点击左上角的file->点击Load lmage…选择需要转换的图片->然后就可以看到转换的图片了
转换的字符可以在工具栏和两个独立的小框进行调整。
4、然后就可以编写文件读取代码了。
代码中有超级详细的注释!!!
#define _CRT_SECURE_NO_WARNINGS//让scanf也能运行,而不是scanf_s #include#include //Sleep睡眠函数在这个头文件 using namespace std; void getTest(int);//读取文本函数声明 const int N = 43;//这个是文本的数量 int main() { char flag = '0'; while (flag != '-1')//设置可以重复播放 { flag = getchar();//每次播放需要按下任按键 for (int i = 1; i < N; i++)//这里循环将每一个图片读取并打印到控制台 { getTest(i); } } return 0; } char s[160][176];//这是用来存储需要打印的字符信息 //因为一行一行打印观感不好,所以先存起来一页一页打印 //并且每张图片转换成字符后,都是160行176列的 void getTest(int n) { //这里我通过将传入的数组转换成字符,然后用文件操作进行读写 //在这之前我的所有文件都改成xx.txt格式,xx表示第几个文件 char arr1[7] = "xx.txt"; //所以只需要将数字转换为字符 //因为只有两位数,所以我就简单写了下 //如果需要转换多位的,就需要写个循环 //while(n !=0) //{ // int t = n % 10; // n /= 10; // ch[i++] = t + 48; //} //然后进行字符串翻转,有个函数我记得,或者直接用双指针 if (n / 10 != 0) { arr1[1] = n % 10 + 48; n /= 10; } arr1[0] = n + 48; //然后读取对应文件 FILE* fp = fopen(arr1, "r"); //判断文件是否读取失败 if (fp == NULL) { perror("fopen"); } //如果读取成功就输出文件的内容 else { //因为先前已经设置好了文件的行列数,就不需要读取到文件尾部的判断 //而是直接按照自己设置的行列进行读取 for (int j = 0; j < 160; j++) { for (int i = 0; i < 176; i++) { fscanf(fp, "%c", &s[j][i]); } } //全部读取后再一次性输出到屏幕上 printf("%sn", s); //输出完成然后关闭文件 fclose(fp); //让输出的字符在屏幕上停留一会,让人的眼睛反应过来 Sleep(100); //等人的眼睛反应过来后就调用控制台指令清空屏幕 //扩展:在DOS窗口(控制台窗口)直接输入cls,就可以清空控制台 //这个函数相当于将字符串在控制台中输入 system("cls"); } //然后在将指针置空 //这应该是一个合格的程序员必要的操作了 //为了防止出现"野孩子捣乱" fp = NULL; //这样一趟下来,就成功输出了一帧图片了,然后退出到主函数,继续循环输出下一帧 //就看可以观看到完整的视频了 }
总结
编程没有天赋而言,只要多敲多练,动脑思考,就能提升!
虽然方法比较简单而且笨拙,是我因为伤病无法打球无聊的突发奇想,但是包含了热爱体现在里面的,相信在以后的不断学习,能够做出更优秀的程序分享给大家。



