STC12C5A32S2 25FPS流畅播放视音频。
效果如下:
SD卡工作在SPI模式,由单片机的硬件SPI驱动。原创的FAT驱动支持簇预处理在性能方面比较突出,STC单片机工作在22.1184M的晶振下估计吞吐量达120+kB/s,当然这个是空跑估算的实际用起来没这么高,缺陷是只支持8.3文件名,不能有中文,且文件只读。我这个LCD19264是基于KS0108驱动芯片的,驱动也是自己写里面有不少功能,有兴趣的话可以参考一下。PWM驱动音箱这个没有什么好说的~通过一个隔直电容电位器直推。
播放的MUX格式是这样的,可以参考一下三楼的AVMuxer的源码,在FAT的512B的扇区里,前256B是1/4帧视频,接着的128B是留空备用的(我的LCD是19264,现在播放的是12864的视频),最后的128B是8bit 12.8k采样率的单声道RAW音频,以25FPS播放。至于为什么要这样设计,先卖个关子,你想到了吗?嘿嘿~~
视频可以用二楼的LCDmodX生成,最近在弄这个东西呵呵,带演示的视频,注意要调整取模规则,我的这个19264是“字节垂直,水平扫描;左上开始,右下结束;低位优先”,不同的屏幕要不同的驱动至于你的LCD的驱动怎么写,你可以参考一下我的源码,只要接口一样就OK了。
音频的生成暂时还没有好的解决方法,因为这不是标准的音频格式,我是用Audition生成的,8bit 12.8k采样率的单声道RAW音频(PCM WAV 音频流)。
三楼是AVMuxer的源码,我用VS2008编译通过,估计VC6也能行,没有制作一个GUI,用的时候改其中的文件路径。
原理图如下:
东西在学校,现在好不容易找到的一张全家福,在自己围脖上挖的......
Keil51 UV4 51工程源码包: VideoPlayer.rar (234 K) 下载次数:165
原理图PDF: VideoPlayer.pdf (23 K) 下载次数:102
在洞洞板上搭的电路,可以看看我以前发的那个无声的烂苹果,现在加上了PWM输出,使用了硬件SPI I/O,FAT文件系统。
LCDmodX 0.3.2.110712 alpha.rar (1819 K) 下载次数:80
效果如下:
SD卡工作在SPI模式,由单片机的硬件SPI驱动。原创的FAT驱动支持簇预处理在性能方面比较突出,STC单片机工作在22.1184M的晶振下估计吞吐量达120+kB/s,当然这个是空跑估算的实际用起来没这么高,缺陷是只支持8.3文件名,不能有中文,且文件只读。我这个LCD19264是基于KS0108驱动芯片的,驱动也是自己写里面有不少功能,有兴趣的话可以参考一下。PWM驱动音箱这个没有什么好说的~通过一个隔直电容电位器直推。
播放的MUX格式是这样的,可以参考一下三楼的AVMuxer的源码,在FAT的512B的扇区里,前256B是1/4帧视频,接着的128B是留空备用的(我的LCD是19264,现在播放的是12864的视频),最后的128B是8bit 12.8k采样率的单声道RAW音频,以25FPS播放。至于为什么要这样设计,先卖个关子,你想到了吗?嘿嘿~~
视频可以用二楼的LCDmodX生成,最近在弄这个东西呵呵,带演示的视频,注意要调整取模规则,我的这个19264是“字节垂直,水平扫描;左上开始,右下结束;低位优先”,不同的屏幕要不同的驱动至于你的LCD的驱动怎么写,你可以参考一下我的源码,只要接口一样就OK了。
音频的生成暂时还没有好的解决方法,因为这不是标准的音频格式,我是用Audition生成的,8bit 12.8k采样率的单声道RAW音频(PCM WAV 音频流)。
三楼是AVMuxer的源码,我用VS2008编译通过,估计VC6也能行,没有制作一个GUI,用的时候改其中的文件路径。
原理图如下:
东西在学校,现在好不容易找到的一张全家福,在自己围脖上挖的......
Keil51 UV4 51工程源码包: VideoPlayer.rar (234 K) 下载次数:165
原理图PDF: VideoPlayer.pdf (23 K) 下载次数:102
在洞洞板上搭的电路,可以看看我以前发的那个无声的烂苹果,现在加上了PWM输出,使用了硬件SPI I/O,FAT文件系统。
http://bbs.mydigit.cn/read.php?tid=242358
视频取模软件 LCDmodX Alpha
转换器只支持AVI文件,在使用之前首先确定系统已经安装过视频解码包(如:终极解码、完美解码等等),个人用的是完美解码(PureCodec20091225)。
推荐安装完美解码http://www.newhua.com/soft/52770.htm
演示
LCDmodX 0.3.2.110712 alpha.rar (1819 K) 下载次数:80
简易视音频混流器源码:
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
FILE *fprv,*fpra,*fpw;
BYTE Buffer[512] = {0};
TCHAR String[MAX_PATH];
DWORD i,j = 0;
if(_tfopen_s(&fpra, _T("D:\\av.raw"), _T("rb"))) //8bit 12.8kHz raw 音频流
return 1;
if(_tfopen_s(&fprv, _T("D:\\av.bin"), _T("rb"))) //25fps LCDmodX生成文件
return 1;
if(_tfopen_s(&fpw, _T("D:\\av.mux"), _T("wb"))) //输出
return 1;
while(1){
if(!(fread(Buffer, sizeof(BYTE), 256, fprv)))
return 1;
if(!(fread(Buffer + 384, sizeof(BYTE), 128, fpra)))
return 1;
fwrite(Buffer, sizeof(BYTE), 512, fpw);
}
fclose(fprv);
fclose(fpra);
fclose(fpw);
return 0;
}
转载自:http://bbs.mydigit.cn/read.php?tid=285953&page=1