手把手教你在STM32上实现OLED视频播放(很简单也很硬很肝!) |
您所在的位置:网站首页 › 如何授权相册sd卡使用视频播放 › 手把手教你在STM32上实现OLED视频播放(很简单也很硬很肝!) |
之前发了一个视频,今天就来告诉大家怎么来实现: 小熊派刷儿子骑摩的的抖音视频,流畅度666666 我们这一代的年轻人基本上都很喜欢逛B站,大部分老人都认为我们这些年轻人上B站是为了看动漫、看游戏等等,谁跟你B站是用来看这些的,B站是用来学习的!
前一段时间就刷到一个视频,某B站Up主利用小熊派开发板制作了一个Bad apple的视频,如下: https://www.bilibili.com/video/BV18t4y1X7jT?from=search&seid=9128578257339532185并且Up主也公开了他的代码和他制作的视频文件。
原理很简单,就是用一个视频截图软件,将播放的视频的图片一张张截下来,利用工具将图片转换成bin文件,然后将bin文件拷贝到SD卡里,最后使用小熊派驱动读取SD卡里对应的bin文件,然后将每一帧图像读出来显示到LCD上即可,那么如何实现呢?大佬用小熊派显示bad apple,我偏不,我就拿它来放别的视频,举一反三,接下来我们直接上干货,下面都是我自己闲时制作的作品: 1、利用KMplayer对视频进行截图 下载地址:https://www.onlinedown.net/soft/38003.htm (1)拖放视频到KMPlayer 这个是我小孩骑摩的玩耍的视频,直接拿来做效果了。
(2)鼠标右键点击,选择高级捕获
(3)设置捕获参数并捕获帧
由于小熊派的屏幕的分辨率是240*240,一张RGB565的图片需要占用115200字节的缓存,所以是无法在Keil上编译通过的,为了能够完成我的作品,所以我用了另外一个128*128的OLED屏,这样一张RGB565的图片仅需要32768字节的缓存,完全可以满足我的设计需求,接下来设置参数完毕后选择点击开始,然后点击播放视频三角符号,开始捕获帧。 (4)接下来视频开始播放,会看到捕获到的目录下有很多图片产生 2、利用Image2Lcd v3.2批量生成bin文件 (1)图片全部捕获完成后,使用Image2Lcd将bmp批量转换成bin文件
接下来在捕获目录下会自动生成一个batch目录,目录下就是生成的bin文件,每个bin文件对应的就是上一级目录的每一张图片。 3、利用Linux下的Cat命令合并所有bin文件将所有bin文件拷贝到Linux下能识别的区域,然后利用Linux下的Cat命令将所有的bin文件合并成一个文件,如下图所示:
当然如果你有更好的合并文件的方法也可以,不一定要在Linux下使用Cat命令合并,这里我只是图方便而已,合并完毕后将这个bin文件拷贝到SD卡的根目录下。 4、编写MCU程序之前已经写过很多现成的demo了,所以这里就不重新再写了,如果有兴趣的话请到我的码云clone这个项目,我们只关心执行bin文件的接口怎么写就可以了,bin文件执行接口实现如下: /*一张RGB565图片占用的缓存大小*/ #define PIC_SIZE 32768 /*在LCD的X坐标*/ #define DISPLAY_START_X 0 /*在LCD的Y坐标*/ #define DISPLAY_START_Y 0 /*LCD宽度分辨率*/ #define OLED_WIDTH 128 /*LCD高度分辨率*/ #define OLED_HEIGHT 128 /*用于显示的缓存区*/ uint8_t framebuffer[PIC_SIZE] = {1}; int sd_show_picture_bin(const char *path) { UINT br; FIL fil ; int offset = 0 ; int file_size ; FRESULT res ; /*1.打开传进来的Fatfs文件路径: path*/ res = f_open(&fil, path, FA_READ); if(FR_OK != res) return -1; /*2.计算这个文件的大小*/ file_size = f_size(&fil); /*3.初始化偏移变量为0*/ offset = 0 ; /*4.计算bin文件里一共包含多少张图片,然后不断的给LCD进行显示*/ for(int i = 0 ; i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |