• 大小: 1.29MB
    文件类型: .rar
    金币: 2
    下载: 2 次
    发布日期: 2023-10-04
  • 语言: 其他
  • 标签: stm32  UVC  USB  

资源简介

1,用的库是官方的HAL库 2,硬件是原子的F429核心板(底板没有。。),用到的外设有,NANDFLASH、SDRAM、USB、一个按键 3,播放设备用的是windows的ECap软件。 4,NANDFLASH里面预存了原子的测试文件夹,里面有做好的AVI文件,名字是“[卢冠廷-一生所爱]_240160_10帧.avi” 5,由于NANDFLASH读取速度不理想,变读取边发送USB的话,经常出错,而且帧卡顿,所以这里先把内容缓存到SDRAM上,然后在发送。 6,使用方法是上电后,点击按键,开始缓存AVI文件到SDRAM中,大约1分钟左右,就可以在ECap上播放了 7,可以在串口上看到一些打印信息,核心板的串口是TTL电平的,需要自己转换。

资源截图

代码片段和文件信息

#include “avi.h“
#include “usart.h“   

AVI_INFO avix; //avi文件相关信息 
u8*const AVI_VIDS_FLAG_TBL[2]={“00dc““01dc“};//视频编码标志字符串00dc/01dc
u8*const AVI_AUDS_FLAG_TBL[2]={“00wb““01wb“};//音频编码标志字符串00wb/01wb

//avi解码初始化
//buf:输入缓冲区
//size:缓冲区大小
//返回值:AVI_OKavi文件解析成功
//         其他错误代码
AVISTATUS avi_init(u8 *bufu16 size)  
{
u16 offset;
u8 *tbuf;
AVISTATUS res=AVI_OK;
AVI_HEADER *aviheader;
LIST_HEADER *listheader;
AVIH_HEADER *avihheader; 
STRH_HEADER *strhheader; 

STRF_BMPHEADER *bmpheader; 
STRF_WAVHEADER *wavheader; 

tbuf=buf;
aviheader=(AVI_HEADER*)buf; 
if(aviheader->RiffID!=AVI_RIFF_ID)return AVI_RIFF_ERR; //RIFF ID错误
if(aviheader->AviID!=AVI_AVI_ID)return AVI_AVI_ERR; //AVI ID错误
buf+=sizeof(AVI_HEADER); //偏移
listheader=(LIST_HEADER*)(buf);
if(listheader->ListID!=AVI_LIST_ID)return AVI_LIST_ERR; //LIST ID错误 
if(listheader->ListType!=AVI_HDRL_ID)return AVI_HDRL_ERR; //HDRL ID错误 
buf+=sizeof(LIST_HEADER); //偏移
avihheader=(AVIH_HEADER*)(buf);
if(avihheader->BlockID!=AVI_AVIH_ID)return AVI_AVIH_ERR; //AVIH ID错误 
avix.SecPerframe=avihheader->SecPerframe; //得到帧间隔时间
avix.Totalframe=avihheader->Totalframe; //得到总帧数  
buf+=avihheader->BlockSize+8; //偏移
listheader=(LIST_HEADER*)(buf);
if(listheader->ListID!=AVI_LIST_ID)return AVI_LIST_ERR; //LIST ID错误 
if(listheader->ListType!=AVI_STRL_ID)return AVI_STRL_ERR; //STRL ID错误  
strhheader=(STRH_HEADER*)(buf+12);
if(strhheader->BlockID!=AVI_STRH_ID)return AVI_STRH_ERR; //STRH ID错误 
  if(strhheader->StreamType==AVI_VIDS_STREAM) //视频帧在前
{
if(strhheader->Handler!=AVI_FORMAT_MJPG)return AVI_FORMAT_ERR; //非MJPG视频流不支持
avix.VideoFLAG=(u8*)AVI_VIDS_FLAG_TBL[0]; //视频流标记  “00dc“
avix.AudioFLAG=(u8*)AVI_AUDS_FLAG_TBL[1]; //音频流标记  “01wb“
bmpheader=(STRF_BMPHEADER*)(buf+12+strhheader->BlockSize+8);//strf
if(bmpheader->BlockID!=AVI_STRF_ID)return AVI_STRF_ERR; //STRF ID错误  
avix.Width=bmpheader->bmiHeader.Width;
avix.Height=bmpheader->bmiHeader.Height; 
buf+=listheader->BlockSize+8; //偏移
listheader=(LIST_HEADER*)(buf);
if(listheader->ListID!=AVI_LIST_ID)//是不含有音频帧的视频文件
{
avix.SampleRate=0; //音频采样率
avix.Channels=0; //音频通道数
avix.AudioType=0; //音频格式

}else
{
if(listheader->ListType!=AVI_STRL_ID)return AVI_STRL_ERR; //STRL ID错误   
strhheader=(STRH_HEADER*)(buf+12);
if(strhheader->BlockID!=AVI_STRH_ID)return AVI_STRH_ERR; //STRH ID错误 
if(strhheader->StreamType!=AVI_AUDS_STREAM)return AVI_FORMAT_ERR;//格式错误
wavheader=(STRF_WAVHEADER*)(buf+12+strhheader->BlockSize+8);//strf
if(wavheader->BlockID!=AVI_STRF_ID)return AVI_STRF_ERR; //STRF ID错误   
avix.SampleRate=wavheader->SampleRate; //音频采样率
avix.Channels=wavheader->Channels; //音频通道数
avix.AudioType=wavheader->FormatTag; //音频格式
}
}else if(strhheader->StreamType==AVI_AUDS_STREAM)   //音频帧在前

avix.VideoFLA

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6104  2018-04-04 11:49  USB_UVC_AVI\APP\avi.c

     文件       6702  2018-04-04 13:27  USB_UVC_AVI\APP\avi.h

     文件      24423  2016-01-30 00:54  USB_UVC_AVI\CORE\cmsis_armcc.h

     文件     114498  2016-01-30 00:54  USB_UVC_AVI\CORE\core_cm4.h

     文件       3620  2016-01-30 00:54  USB_UVC_AVI\CORE\core_cmFunc.h

     文件       3636  2016-01-30 00:54  USB_UVC_AVI\CORE\core_cmInstr.h

     文件       3662  2016-01-30 00:54  USB_UVC_AVI\CORE\core_cmSimd.h

     文件      31702  2016-01-30 00:56  USB_UVC_AVI\CORE\startup_stm32f429xx.s

     文件      18133  2018-03-23 13:37  USB_UVC_AVI\DRIVER\ftl.c

     文件       1678  2018-03-23 13:07  USB_UVC_AVI\DRIVER\ftl.h

     文件       2966  2018-03-20 14:36  USB_UVC_AVI\DRIVER\KEY.c

     文件       1227  2018-03-20 13:54  USB_UVC_AVI\DRIVER\KEY.h

     文件        317  2018-03-15 11:58  USB_UVC_AVI\DRIVER\led.c

     文件        109  2018-03-15 11:47  USB_UVC_AVI\DRIVER\led.h

     文件      24910  2018-03-23 13:06  USB_UVC_AVI\DRIVER\nand.c

     文件       3323  2018-03-23 13:06  USB_UVC_AVI\DRIVER\nand.h

     文件       6325  2018-03-20 08:45  USB_UVC_AVI\DRIVER\sdram.c

     文件       1049  2018-03-20 08:45  USB_UVC_AVI\DRIVER\sdram.h

     文件       2388  2018-04-04 14:25  USB_UVC_AVI\DRIVER\timer.c

     文件        285  2018-04-04 14:25  USB_UVC_AVI\DRIVER\timer.h

     文件       5091  2018-03-22 13:40  USB_UVC_AVI\DRIVER\usart.c

     文件        591  2018-03-21 16:57  USB_UVC_AVI\DRIVER\usart.h

     文件      13537  2018-03-20 13:05  USB_UVC_AVI\DRIVER\w25qxx.c

     文件       2233  2018-03-20 10:02  USB_UVC_AVI\DRIVER\w25qxx.h

     文件     724722  2017-08-18 15:43  USB_UVC_AVI\Fatfs\cc936.c

     文件       7708  2018-03-29 09:42  USB_UVC_AVI\Fatfs\diskio.c

     文件       2707  2016-04-12 21:25  USB_UVC_AVI\Fatfs\diskio.h

     文件     193221  2017-08-31 11:04  USB_UVC_AVI\Fatfs\ff.c

     文件      13815  2017-08-31 11:04  USB_UVC_AVI\Fatfs\ff.h

     文件      10674  2018-03-29 09:46  USB_UVC_AVI\Fatfs\ffconf.h

............此处省略213个文件信息

评论

共有 条评论