本文所讲解的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个字节(见数组xin[5]),分别是单个bin文件大小(两个字节),图片高度(一个字节),要显示到的位置高度(一个字节),要显示到的位置宽度(一个字节),其中,要显示到的位置宽度中,1代表16个点,比如:设置要显示的位置高度和要显示到的位置宽度是6,2,他会在12864的左上角,向下6个点,向右32个点处显示视频,所以设置时要注意,不要太靠右。
    根据上面的理解,现在就可以更改源码,标红的是必须要改的,按照取模长宽,文件大小等去改,绿色的可以改,也可以不改。改完编译运行,就可以生成可以使用的bin文件了。**注意:**有的img2lcd生成的是ebm文件,不是bin文件,bin和ebm都是二进制,后缀名是啥无所谓,如果你生成的文件是ebm的,下面的图片中的文字提示,自行将bin改成ebm就行了。


6. 视频同步原理
做到上面之后,就可以显示视频了,但是时间往往上不同步,现在可以采用一种办法,近似同步。发送bin文件时,是115200的波特率,就是11520字节/每秒,比如,视频截图后,一张图片取模生成的单个bin文件是1152字节,这种传输速度发这个图片只能是1秒发10张,所以截屏时,截屏速度,也设置成1秒截10张,就是0.1秒截一次屏,这样图片取模生成的bin文件,就是时间同步的。
上面简化成公式就是
截屏速度(秒/次) = 单个bin文件大小 / 11520
截屏时采用上述计算的速度,就是同步的,否则不同步。

制作bin文件.c解读相关推荐

  1. Python应用开发——制作bin文件

    Python应用开发--制作bin文件 目录 Python应用开发--制作bin文件 前言 1 环境搭建 2 代码编写与测试 结束语 前言 什么是bin? bin是二进制文件,其用途依系统或应用而定. ...

  2. linux .bin文件处理,linux下制作.bin文件方法简介

    linux 下制作二进制 .bin 的文件 制做方法是使用cat 命令将执行脚本和打包文件同事放到一个.bin的文件里 这样安装的时候只要使用一个包,直接执行该包即可安装完毕,简单方便. 例:制作安装 ...

  3. Linux下制作bin文件,并对其进行截取、合并、修改

    在某些情况下,可能会用到全为某个值的 bin 文件,可使用 dd 命令配合 /dev/zero 这个特殊的文件设备,来生成全为 0x00 的 bin 文件.然后再使用 tr 命令,替换0x00 为 特 ...

  4. 【杰理AC696X】外挂FLASH音乐播放及Bin文件制作

    外挂FLASH音乐播放及Bin文件制作 测试SDK版本:<ac696n_soundbox_sdk_v1.6.0> 文章目录 外挂FLASH音乐播放及Bin文件制作 前言 一.板级配置 1. ...

  5. linux bin文件制作

    linux bin文件制作 一 Linux安装文件 Linux常见的安装为tar,zip,gz,rpm,deb,bin等.我们可以简单的分为三类, 第一:打包或压缩文件tar,zip,gz等,一般解压 ...

  6. 自上而下解读ncnn系列(1):加载param模型和bin文件前向传播

    由于这段时间着手实现tensorflow到ncnn的转换,开发过程中对ncnn框架有了一定的认识,特此分享. 关于tensorflow2ncnn的具体细节和步骤,可以参考我的github: https ...

  7. linux bin文件制作,linux 将脚本制作成二进制bin文件

    本教程,实现将shell脚本和需要安装的软件包制作成二进制bin文件 1.编写shell脚本 这里有个安装jenkins的shell脚本,脚本内容如下: #!/bin/bash sed -n -e ' ...

  8. linux下通过bin文件来制作img镜像文件

    通过DE1的学习,在生成preloader的过程中,我们生成了如下的bin文件 在启动SD卡的时候,需要uboot.image文件,因此将该bin文件转换成image文件,这里采用linux来转换.首 ...

  9. linux bin文件安装文件,Linux .bin安装文件制作

    一 Linux安装文件 Linux常见的安装为tar,zip,gz,rpm,deb,bin等.我们可以简单的分为三类, 第一:打包或压缩文件tar,zip,gz等,一般解压后即可,或者解压后运行sh文 ...

  10. VS2019 WPF制作OTA上位机(二)获取bin文件路径

    OTA升级是通过无线通信远程把bin文件内容传输到单片机,完成升级. 因此上位机需要获取bin文件的路径,读取bin文件内容,将内容分割依次发送(因为单片机的接收缓存不会开得和bin文件一样大(十几K ...

最新文章

  1. VS调试dll详细过程记录
  2. jQuery代码优化的9种方法
  3. 【干货】Kaggle 数据挖掘比赛经验分享(mark 专业的数据建模过程)
  4. QT学习:多国语言国际化
  5. centos的mysql命令,Centos系统mysql相关命令
  6. numpy的where方法
  7. apex图表使用饼图居中_还在用单饼图展示Excel数据?一分钟学会制作复合饼图
  8. Python Imaging Library: Script(脚本)
  9. 小峰servlet/jsp(4)EL表达式
  10. 凸优化系列二:确定步长一维搜索算法
  11. java lambda函数_Java中的Lambda函数
  12. 计算机显示器刷新率怎么调,电脑显示器刷新率如何设置,免费教你如何快手设置刷新率...
  13. 刚写完的 基于微信的房产中介预约看房小程序 毕业设计毕设源码
  14. 快手裁员30%,大部分年薪超100万!揭露职场真相:思考的深度,决定职场的高度...
  15. 用彩信模块发图片问题总结(STM32)
  16. 趣图:程序员到底是一群什么样的人?
  17. 7-1 求e的近似值 (15 分)
  18. 如何构建语音识别能力?有哪些语音数据集?
  19. Flash的破解与加密
  20. smartctl 使用

热门文章

  1. 华为hcie认证中-VxLAN 网管划分
  2. python中求绝对值的函数_python如何取绝对值 python取绝对值方法
  3. 什么是集合?数组与集合的区别
  4. 驱动开发:BSOD 0xC4_f6 句柄问题
  5. 无效的m3u8怎么办_m3u8视频不能播放的问题
  6. 什么是PoE交换机?PoE交换机与PoE+交换机的区别!
  7. 51单片机计算机加原理图,MCS-51单片机最小系统的组成部分及电路图介绍
  8. Linux下安装vim命令
  9. 维视智造机器视觉表面缺陷检测技术
  10. mvn 命令指定jdk版本