首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

VC++6.0 作视频显示

2012-12-31 
VC++6.0 做视频显示要在VS2008写用C++ MFC 做视频显示。我的视频不是电脑上的USB摄像头, 是从ARM上发送过来

VC++6.0 做视频显示
要在VS2008写用C++ MFC 做视频显示。
我的视频不是电脑上的USB摄像头, 是从ARM上发送过来的视频流数据局, 就是一帧一帧的视频数据,
现在数据已经可以在MFC中准确接收了, 但是下一步怎么把这些数组变成视频?
我想的的思路: 数组变成一张图片, 定时器每秒显示15张图片, 不知道思路对不对。 用什么控件来做。
[解决办法]
DirectShow

VFW

AVIFileOpen,AVIFileCreateStream,AVIStreamWrite,AVIFileRelease系列函数

论坛上用这几种的人比较多。
[解决办法]
显示用双缓冲就可以了,保存视频的话最好还是压缩下,用opencv也好简单
[解决办法]
用opencv好简单 
[解决办法]
"数组变成一张图片, 定时器每秒显示15张图片, 不知道思路对不对"
思路是对的,不过一般是先看视频流的帧率,有可能是25或30.
ARM发来的视频有可能是压缩的,要先解压。没压缩的,也可能是YUV丑多,先转成BMP,再显示。GDI直接就可以显示位图,用BitBlt函数或StrechBitBlt。先和你们做ARM的同事沟通一下,看看数据流是怎么传过来的,因为宽度和高度需要知道,有了宽高,假设是24位真彩,自己构造一下头:
                                        BITMAPINFOHEADER header;
header.biSize = sizeof(BITMAPINFOHEADER);
header.biWidth = 宽度;
header.biHeight = 高度;
header.biBitCount = 24;
header.biCompression = 0;
header.biSizeImage = 0;
header.biClrImportant = 0;
header.biClrUsed = 0;
header.biXPelsPerMeter = 0;
header.biYPelsPerMeter = 0;
header.biPlanes = 1;
然后,在对话框里的OnPaint类似的函数里调用BitBlt就可以了。

热点排行