资源简介
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个文件信息
相关资源
- H310.B360.H370.Z390.USB WIN7 64位第三方驱动
- 300系列WIN7 USB驱动.7z
- 华硕P8H61/USB3 R2.0主板BIOS驱动 免费版
- RTL8188EVT USB WIFI无线网卡驱动 免费版
- RTL8188 USB无线网卡模块完整方案
- 基于STM32F4x9的LCD显示
- VS1053B编解码器的VDR分布式声音采集卡
- USB PCB布局布线要点及注意事项
- stm32的DAC播放音乐文件
- STM32+TMC5160代码电路图.rar
- 基于STM32的深海钻机甲板控制系统
- USB驱动 INF中的服务安装段落无效的原
- MTP USB驱动win7 32+64位可用版
- stm32f103.SchDoc
- STM32F103 USART+DMA
- DMA+stm32 407.zip
- 4_USART串口通信(空闲中断+DMA.zip
- stm32f105-usart-DMA收发demo
- STM32F042F6P6 Uart12DMA;发送中断接收
- ACS读卡器USB驱动程序 v4.0 官方版
- 基于STM32的嵌入式双目图像采集系统设
- USB Power Delivery 2.0与3.0区别
- 二代证读验机具usb驱动 v3.0 官方版
- 新大陆pos机usb通用驱动 v2.1.1 官方最新
- 基于STM32F103C8单片机的晶联讯电子JL
- EasyCAP SM-USB 007采集卡驱动 官方版
- 基于STM32的温湿度检测系统实现
- stm32F4+w5300
- 14284969_《STM32单片机应用与全案例实践
-
ST-li
nk-V2的SWD仿真使用方法.docx
评论
共有 条评论