在wince下用Directshow开发的摄像头应用程序,保存视频为什么那么慢

在wince上用Directshow开发的摄像头应用程序,保存视频为什么那么慢
最近在wince6.0上面开发了一个基于Directshow的摄像头应用程序,是在网上一个工程代码基础上改的,这个工程代码估计也是出自微软,因为文件头都写着微软的版权,所以API的调用应该没啥问题。现在应用程序跑起来后,发现录像时,点击保存保存视频文件要很久,比如录10秒,保存视频文件也基本要十几秒,还有截图,截完图后视频画面居然不动了。网上资料很少,有人说wince的Directshow机制无法实现视频边录像边保存,所以保存时特别耗时。

请教路过的大侠,如果懂Directshow,尤其是wince平台上的Directshow的,请指点一下我该如何解决以上问题。
------解决方案--------------------
因为这玩意用了 软解码,微软的压缩量太大 所以慢。可以找找平台的硬解码。或者用软解码,压缩量没那么大的,例如:压缩成jpeg保存为avi
------解决方案--------------------
CE下的编码是软编码,速度是很慢的,要想速度快,只有想办法去实现硬编码。
------解决方案--------------------
引用:
引用:

CE下的编码是软编码,速度是很慢的,要想速度快,只有想办法去实现硬编码。


硬编,想到这个玩意头都大,“硬编”这个概念我都还是前几天才知道是什么个东西,我现在的wince摄像头应用程序是我一个人在做,要来个“硬编”,那是不是工作量太大了呀,而且项目给了一个半月,现在只剩半个月的时间了。请问还有什么办法吗


软编码,CE 下没来就没有什么好的,系统提供的写出来的文件会很大。实时存不行!
------解决方案--------------------
硬编码你的处理器支持吗?支持的话,厂家会提供示例调用代码,你找到读懂就行了。
不支持只能软编码,最好用mpeg4编码器(你的例子是asf文件格式,实际应该调用了wmv9编码器,本身运算量大于mpeg4),并且要对算法高度优化,才能取得好的效果,所以这个东西不是那么简单的
------解决方案--------------------
引用:
引用:

因为这玩意用了 软解码,微软的压缩量太大 所以慢。可以找找平台的硬解码。或者用软解码,压缩量没那么大的,例如:压缩成jpeg保存为avi


谢谢liangxd09的指点,我现在抓图保存的是jpg格式,视频录像保存的是.asf格式。
我纠正一下我的原贴:摄像头现在是可以边录制边保存,不过感觉保存得很慢而已,比如录了一分钟,一般有400K,……

你的啥平台,比如三星6410,里面就有个mfc的东东。你的平台应该也有硬编码的玩意,会有api的



------解决方案--------------------
我弄过个JPEG.LIB来软编码,录像320*240,15帧每秒,速度可以。要是分辨率高了就不行,还得用mfc(硬编码)
------解决方案--------------------
引用:
引用:

硬编码你的处理器支持吗?支持的话,厂家会提供示例调用代码,你找到读懂就行了。
不支持只能软编码,最好用mpeg4编码器(你的例子是asf文件格式,实际应该调用了wmv9编码器,本身运算量大于mpeg4),并且要对算法高度优化,才能取得好的效果,所以这个东西不是那么简单的


看了下代码,调得确实是wmv9编码器,我这机器是320x240,……

1.关于看不清报纸的东西,这个涉及到对焦的问题,你看下你的摄像头支不支持AF(自动对焦),如果不支持,可根据你的实际需求较模组厂更改镜头焦距来达到你的实际应用。。
2.如果光靠软编的话恐怕 很难满足你 QVGA 30fps的要求。至于能不能支持硬编,这个可以看一看你CPU的datasheet及BSP的相关部分。
------解决方案--------------------
   我们做的可视对讲,互相声音视频对讲,除了可以同时对讲之外,还能实时录制音视频,不过我是分开录制的,以前用过一个MP4库,想录成MP4格式,但是发现写文件时跟你说的差不多,前面基本不写,调用了停止录制时才开始写,非常慢。。硬件编解码是很快的,几乎不需要时间,就能编码能MP4格式