续三-关于视频捕获的问题--写avi文件
各位大虾,我用StreamCallbackProc(HWND hWnd, LPVIDEOHDR lpVHdr)捕获到的视频缓冲(lpVHdr),要存成一个avi文件,该如何实现?
是不是要用到avifile的AVIFileWriteData等函数?
另外存成avi文件时,肯定要写一些文件的头格式,那哪里有avi文件的格式?如何写?
请教了!
问题点数:50、回复次数:19Top
1 楼woowindicevc(vcvc2vc)回复于 2001-12-11 22:30:45 得分 0
来学习:)Top
2 楼woowindicevc(vcvc2vc)回复于 2001-12-11 22:38:07 得分 0
来学习:)Top
3 楼woowindicevc(vcvc2vc)回复于 2001-12-11 22:38:12 得分 0
来学习:)Top
4 楼jadeking(米兰)回复于 2001-12-12 11:28:05 得分 0
没有人知道了吗?高手去哪里了?Top
5 楼acptvc(微软全球技术中心 VC技术支持)回复于 2001-12-12 20:17:22 得分 10
首先感谢您使用微软产品。
Platform SDK中的Windows Media函数可以帮助从视频捕捉卡捕捉动态图象并存储为硬盘上的avi文件。在MSDN在线网站上有完整的函数参考与例子代码,地址是http://msdn.microsoft.com/library/default.asp?url=/library/en-us/stream/vidcapds_5rub.asp。以下是一段简单的例子代码:
HWND hWnd=capCreateCaptureWindow("title",WS_CHILD | WS_VISIBLE,20,20,160,120,this->m_hWnd,10); //初始化捕捉窗口
capDriverConnect(hWnd, 0); //连接到第一个捕捉卡(id=0)
capPreviewRate(hWnd, 30); //设定预览的frame rate为30
capPreview(hWnd, TRUE); //开始在捕捉窗口显示预览
capCaptureSequence(hWnd); //开始捕捉到图象到c:\capture.avi
通过这段代码就可以开始捕捉动态图象并存储到本地avi文件(默认设置是c:\capture.avi)。在实际运用中,最好在新线程中进行捕捉以避免阻塞GUI响应,捕捉完成后应注意释放相应设备和资源。
此外,使用Windows Media Encoder SDK 7.1进行编程也可以实现视频捕捉与存储。您可以在微软网站下载Windows Media Encoder SDK并安装,其中有用VB和VC编写的例子并附有完整源码。
- 微软全球技术中心 VC技术支持
本贴子仅供CSDN的用户作为参考信息使用。其内容不具备任何法律保障。您需要考虑到并承担使用此信息可能带来的风险。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。
为了为您创建更好的讨论环境,请参加我们的用户满意度调查(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。
Top
6 楼zhubo(rickyzhu.com)回复于 2001-12-12 20:27:59 得分 0
这么正式的答复,好怕怕哦!Top
7 楼jadeking(米兰)回复于 2001-12-12 20:45:58 得分 0
首先非常感谢acptvc(微软全球技术中心 VC技术支持) 为我提供如此详细的帮助,但我想你可能没有理解我的意思,
用AVICap技术捕获视频并存成avi文件(你说的方法,是通过这种技术从视频头获得的视频直接通过capFileSetCaptureFile(m_hWndVideo, Filename);
capCaptureSequence(m_hWndVideo);就可以,这个我也已经知道了,
但我指的是从StreamCallbackProc(HWND hWnd, LPVIDEOHDR lpVHdr)捕获到的视频缓冲(lpVHdr)中获得的lpVHdr数据如何存成一个文件?不知你明白我的意思吗?
多谢!非常感谢!Top
8 楼jadeking(米兰)回复于 2001-12-12 20:53:37 得分 0
acptvc(微软全球技术中心 VC技术支持) ,你是上海微软技术支持中心的吗?
我们公司已经买了MSDN,有客户号,如果方便,我可以和你联系吗?你的联系方式?
这个case算你了啦!Top
9 楼florist2000(我爱susan)回复于 2001-12-12 22:37:27 得分 30
上次给你源代码,你还没有给我加分
这次还忙你的忙
首先在缓冲区里面存的是张设备无关位图,里面有个位图结构,这个我想你是知道的了
你的问题,无非是把一组位图转换程为AVI文件而已
如果你要去了解AVI文件格式,将是很让人头痛的问题
比如,AVI是音频视频交错流文件,它甚至可以在中间加入一些文本信息都可以。
那么要将一组位图融合为AVI文件。
步骤如下:
AVIFileOpen创建你的AVI文件
avifilecreatestream创建视频流
AviStreamSetFormat设置视频流格式
Avistreamwrite把一张设备无关位图写入你的视频流
最后就是关闭了,不说我也知道
这次不加分,以后是不会在回你的帖子了。
Top
10 楼florist2000(我爱susan)回复于 2001-12-12 22:40:00 得分 0
文件头格式,任何帮助里面都有
你可以查MSDN,也可以查DELPHI等带的WIN32SDK帮助
主要的文件头格式是两个
一个位图的BMPINFOHEADER
一个是AVISTREAMINFO
Top
11 楼kingcharles(charles)回复于 2001-12-12 23:01:30 得分 0
其实就几个函数就是了
不过好多回吊看得我晕晕
有一本VC++多媒体编程有讲过哦
要的话我发给你原代码
Top
12 楼kingcharles(charles)回复于 2001-12-12 23:03:56 得分 10
其实不用你自己修改那些文件头的
用SDK都帮你做好了
我用这个做了个AVI STUDIO
还不错
不过老师要我做应该视频场景的选取好头疼
Top
13 楼kingcharles(charles)回复于 2001-12-12 23:04:50 得分 0
有兴趣的给个QQ
4425443这是ME的Top
14 楼jadeking(米兰)回复于 2001-12-13 09:05:23 得分 0
florist2000(善良的石头),多谢你的帮助!跟你澄清一下,上次的分都给你加了,50分。另外一个寻找你的贴子也给你了20分,你去看看!最好用管理模式进去看!
除非是CSDN里面的bug,那我就没有办法了,我说话算话!Top
15 楼jadeking(米兰)回复于 2001-12-13 09:07:50 得分 0
kingcharles(charles),多谢,平时没有时间开QQ,还是告诉你我的email:
wangheng228@263.netTop
16 楼jadeking(米兰)回复于 2001-12-14 09:09:30 得分 0
kingcharles(charles),你怎么 不说话了,我已经给你发QQ加为好友的认证了,另外email地址也告诉你了,没有动静啊!Top
17 楼VC_LOADING(眼镜)回复于 2001-12-22 19:36:41 得分 0
http://www.codeproject.com/useritems/avigenerator.aspTop
18 楼Un1()回复于 2001-12-22 20:49:28 得分 0
视频格式可以通过:
capGetVideoFormat 获取。Top
19 楼jadeking(米兰)回复于 2001-12-31 15:34:03 得分 0
终于搞定了,多谢各位!Top




