纬图虚拟仪器论坛

 找回密码
 立即注册
搜索
查看: 20757|回复: 10

STM32显示视频方法和源码下载

[复制链接]
发表于 2012-11-16 15:44:08 | 显示全部楼层 |阅读模式
本帖最后由 chenxuyang1991 于 2012-11-16 16:29 编辑

本程序使用了振南的显示视频方法,详细介绍可以看这里:http://www.openedv.com/posts/list/0/7869.htm#54770
废话少说,先上视频:
http://player.youku.com/player.php/sid/XNDc1ODAzMDgw/v.swf
实现功能简介:
1,通过视频解码程序将AVI视频解码后储存为解码后的文件,也就是把视频转换为连续图片集合文件。
2,STM32通过文件系统将这个文件读出来并读取一帧图片数据然后再将这个图片送给LCD显示。
3,通过连续不断的读数据,合成图片数据,显示图片即可实现视频显示。

不足之处:
1,兼容性差,只能显示转码后的特定文件。
2,没有声音。
3,图片显示可能会比实际显示的速度慢。

本程序包含以下内容:
1,znFAT的移植和使用。
2,FSMC的配置和使用。
3,SSD1289的驱动。
4,SD卡SDIO查询模式驱动。
5,串口打印输出。

显示视频的上层代码:
  1. /**
  2.   * @brief  通过znFAT文件系统读取SD卡里面的视频文件并在LCD上显示
  3.   * @param  None
  4.   * @retval None
  5.   */
  6. void znFATTest(void)
  7. {
  8.         uint32_t i=0,j=0,k=0,ret,br;
  9.         unsigned long width,height,total;
  10.         ret = znFAT_Device_Init();//初始化底层SD卡
  11.         printf("znFAT_Device_Init : %d\n\r",ret);
  12.         ret = znFAT_Select_Device(0,&Init_Args); //选择设备
  13.         printf("znFAT_Select_Device : %d\n\r",ret);
  14.         ret = znFAT_Init();        //初始化文件系统
  15.         printf("znFAT_Init : %d\n\r",ret);
  16.         while(1)//打开SD卡根目录下的znv文件
  17.         {  
  18.                 ret = znFAT_Open_File(&FileInfo,"\\mouse.znv",0,1);
  19.                 printf("znFAT_Open_File : %d\n\r",ret);
  20.                 znFAT_ReadData(&FileInfo,FileInfo.File_CurOffset,512,Buff);//读取文件头,获取文件信息
  21.                 width=LE2BE(Buff,4); //宽
  22.                 height=LE2BE(Buff+4,4); //长
  23.                 total=LE2BE(Buff+8,2); //总帧数
  24.                 printf("width = %d\n\r",width);
  25.                 printf("height = %d\n\r",height);
  26.                 printf("total = %d\n\r",total);
  27.                   ARC_LCD_SetDisplayWindow((320-width)>>1,(240-height)>>1,width-1,height-1);        //设置显示窗口
  28.                   ARC_LCD_SetCursor((320-width)>>1,(240-height)>>1); //设置显示起始坐标
  29.                   LCD_REG = (LCD_REG_22H); //发送写数据命令
  30.                   while(1)
  31.                   {
  32.                           for(j=0;j<total;j++){
  33.                                 for(k=0;k<153600/4096;k++){
  34.                                         br = znFAT_ReadData(&FileInfo,FileInfo.File_CurOffset,4096,Buff);        
  35.                                         for(i=0;i<br;i+=2){
  36.                                                 LCD_RAM = (Buff[i]<<8)|Buff[i+1];//*((unsigned short *)(&Buff[i]));
  37.                                         }
  38.                                 }
  39.                                 br = znFAT_ReadData(&FileInfo,FileInfo.File_CurOffset,153600%4096,Buff);
  40.                                 for(i=0;i<br;i+=2){
  41.                                         LCD_RAM = (Buff[i]<<8)|Buff[i+1];//*((unsigned short *)(&Buff[i]));
  42.                                 }
  43.                         }
  44.                         znFAT_Close_File(&FileInfo);
  45.                         printf("display end!!\n\r");
  46.                         while(1);
  47.           }
  48.         }
  49. }
复制代码
实现视频显示所要用到的软件:
将AVI文件转换为单片机视频显示文件的软件: 振南的AVI解码工具.rar (8.12 KB, 下载次数: 232)
回复

使用道具 举报

发表于 2012-11-16 16:33:00 | 显示全部楼层
多谢楼主分享
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-16 17:43:09 | 显示全部楼层
在来个流畅版的视频和源码:
http://player.youku.com/player.php/sid/XNDc1ODU1MzA4/v.swf
源码下载: sdio_fatfs_ video.rar (2.13 MB, 下载次数: 192)
回复 支持 反对

使用道具 举报

发表于 2012-11-23 18:03:40 | 显示全部楼层
AVI的视频如果是750*580的,怎么改成320*240的?
上面给的工具 把视频加进去  那个分辨率是灰色的啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-23 18:44:57 | 显示全部楼层
ygtjcng1 发表于 2012-11-23 18:03
AVI的视频如果是750*580的,怎么改成320*240的?
上面给的工具 把视频加进去  那个分辨率是灰色的啊


回复 支持 反对

使用道具 举报

发表于 2012-12-11 16:13:50 | 显示全部楼层
谢谢分享................
回复 支持 反对

使用道具 举报

发表于 2013-3-18 12:43:57 | 显示全部楼层
这个解码软件好像用不了
F:\
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-3-18 14:19:45 | 显示全部楼层
qingtianyu 发表于 2013-3-18 12:43
这个解码软件好像用不了

应该是没问题的
回复 支持 反对

使用道具 举报

发表于 2013-3-18 22:12:00 | 显示全部楼层
这个可以· ·
回复 支持 反对

使用道具 举报

发表于 2015-2-7 21:15:32 | 显示全部楼层
程序中的153600数值是啥,怎样来的?
回复 支持 反对

使用道具 举报

发表于 2018-7-5 17:49:20 | 显示全部楼层
看了LZ的帖子,我只想说一句很好很强大!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|纬图虚拟仪器

GMT+8, 2024-12-22 15:36 , Processed in 0.145949 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表