IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 制作bin文件.c解读 -> 正文阅读

[C++知识库]制作bin文件.c解读

本文所讲解的12864视频bin文件的合成办法,生成的bin文件,只适用于自己的上一个博客的12864播放视频的代码,其他的博主的代码不支持。

  1. 先对视频进行截屏,截屏工具用PotPlayer软件,截屏方法自行百度,不在此赘述了,先暂时不考虑截屏的速度(如要考虑,请看第6节),建议差不多一秒13张的速度对一个视频进行截屏。
    注意:如果对一个电影进行截屏,一个电影往往上下都有黑边,串口传输本身就慢,传输那些黑边没有一点显示价值,浪费传输速度资源,所以建议用ps批量先处理一下视频,把黑框截去,只保留100%的图像,然后再截图。
  2. 将截屏的图片批量重命名,办法参考
    https://jingyan.baidu.com/article/375c8e19ef567625f2a229c7.html
  3. 用image2lcd软件的高版本对上千的图片进行批量取模,参数见下图,
    注意:最大宽度和高度的设置,宽度不能超过128,高度不能超过64图片取模参数
    设置完以后,注意一下,image2lcd窗口中间最下面的输出图像,它是实际输出的宽度和高度,宽度不能超过128且高度不能超过64,小于都是可以的。大于则需要重新调整,调整完按一下按钮。另外:image2lcd只能按照比例对图片进行取模,这样也很好,视频图像不压扁和拉伸,显示效果好。image2lcd下载地址参考:https://blog.csdn.net/fantastic_sky/article/details/110530389
  4. 批量取模以后,会生成上千个与之对应的bin文件。现在需要将这么多的bin文件合成一个bin文件,并加上必要的参数,此时制作bin文件.c的作用就来了。需要的软件是:vc++2010,vc++6.0等可以编译运行c语言的软件
    介绍这个文件之前,先介绍几个函数。 代码需要五个核心的函数。include <stdio.h>
    sprintf
    fopen
    fread
    fwrite
    fclose
    对于开发c语言的上班族而言,这几个函数处处可见,但是对于对电子设备感兴趣的大学生来说,代码接触的少,所以也很少有机会接触到这几个函数的真正用法。
    printf大部分上过c语言的同志都知道,它可以在黑框命令行(俗称:终端)上打印一段字符串,%d,%c,%s,应该都知道这个是打印什么的。
    sprintf跟printf基本上是一模一样的,但是printf是向终端上输出字符串,而sprintf是向字符数组中输出字符串。这两个函数参数基本一样,只有一个区别,就是sprintf比printf最前面多一个参数,char型指针,传一个字符数组即可,后面写法和printf一样,这样printf组合成的字符串,就直接被填到数组了。若此时打印这个字符数组,它的结果就是这个组合的字符串。如此一来,批量的bin文件名的问题就解决了
    比如批量的bin文件叫 a(xxx).bin,xxx是数字,总共有1000个bin,那就是xxx是1-1000。
    可以写代码:
	int i;
	char binFile[100];
	for(i = 1;i <= 1000;i ++{
		sprintf(binFile, "路径/a(%d).bin", i);
		//i为1,binFile里就是"路径/a(1).bin",i为2,binFile里就是"路径/a(2).bin"
		//binFile就是bin文件的文件名了,就可以用这个去打开文件了。
		...
		//打开文件,读文件,写文件,关闭文件等操作
		...
	}
  1. 后面四个函数,均为标准io函数,他可以读写文件,现在代码上已经知道文件名了,就很容易对文件进行读写了,无非就是从一个文件中读取数据,存在字符数组中,然后,再把字符数组写到另外一个文件里。我想讲到这,估计就不用再讲了,书本上,网上标准IO资料多的是,可以自行学习。
    在这里,可以介绍一下一个容易被所有初学计算机的同志混淆的知识,那就是在计算机的世界里,所有文件都是二进制,不管是什么后缀名,没有任何区别。不同的后缀名只代表他二进制的编排格式不一样,读文件时,要按照它的格式,才能正确解读到有效的信息。比如很多图片文件,都是前几个字节代表文件头,几个字节代表什么什么,如果不按他的标准来解读文件,根本不知道他是个什么图片。
    知道这个之后,还有一个点需要注意,该c文件,开始时,会向合并的bin文件中写入5个字节,分别是单个bin文件大小(两个字节),图片高度(一个字节),要显示到的位置高度(一个字节),要显示到的位置宽度(一个字节),其中,要显示到的位置宽度中,1代表16个点,比如:设置要显示的位置高度和要显示到的位置宽度是6,2,他会在12864的左上角,向下6个点,向右32个点处显示视频,所以设置时要注意,不要太靠右。
    根据上面的理解,现在就可以更改源码,标红的是必须要改的,按照取模长宽,文件大小等去改,绿色的可以改,也可以不改。改完编译运行,就可以生成可以使用的bin文件了。
    需要修改的东西1
    需要修改的东西2
  2. 视频同步原理
    做到上面之后,就可以显示视频了,但是时间往往上不同步,现在可以采用一种办法,近似同步。发送bin文件时,是115200的波特率,就是11520字节/每秒,比如,视频截图后,一张图片取模生成的单个bin文件是1152字节,这种传输速度发这个图片只能是1秒发10张,所以截屏时,截屏速度,也设置成1秒截10张,就是0.1秒截一次屏,这样图片取模生成的bin文件,就是时间同步的。
    上面简化成公式就是
    截屏速度(秒/次) = 单个bin文件大小 / 11520
    截屏时采用上述计算的速度,就是同步的,否则不同步。
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-13 12:37:21  更:2021-12-13 12:38:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:06:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码