阅读:1593回复:8
怎样开发内存缓冲的程序
在笔记本上开发一视频采集软件,由于笔记本硬盘太慢,造成采集丢帧(也就是将视频数据丢失了),因此想出了在物理内存中开辟一区域做缓冲区(100M以上),将采集到的数据先往缓冲区里放,再有另一专门的线程将缓冲区中的数据写回硬盘.可程序写完后发现,就是将缓冲区加大到200M,程序运行没几秒钟,缓冲区就溢出了,我用的笔记本硬盘是4200转的,按理说在物理内存中开200M的缓冲区应该够弥补硬盘速度的缺陷的,是不是我的想法有什么问题?或是有没有什么办法可加快WriteFile()写盘的速度?
|
|
沙发#
发布于:2002-09-30 09:23
视频采集卡的速率是多少
|
|
板凳#
发布于:2002-09-30 09:24
加快写磁盘的速度的唯一办法就是减少磁头移动
|
|
地板#
发布于:2002-09-30 09:25
如果采集速率大于磁盘IO的话,那就不行。 :D :D :D
|
|
|
地下室#
发布于:2002-09-30 11:44
数据不能很快的写到硬盘上去,buffer再大也没有用啊。
|
|
5楼#
发布于:2002-09-30 11:49
或许可以这样,我认为你的想法是正确的,没有逻辑上的错误,但是需要有一个同步措施。即保证缓冲不会溢出,又不会遗漏数据,如果两者速度极端不匹配,想做到完全不丢视频数据很难,但是至少可以改观不少。
在写缓冲的时候,先检查缓冲是否用完,如果用完,则转为直接写盘,以保证数据量大时不丢失数据。 |
|
|
6楼#
发布于:2002-09-30 19:11
忘了说一点,其实造成写盘速度慢的真正原因是由于程序要一边播放一AVI文件,一边进行采集,造成了硬盘磁头移动太频繁,所以我想出内存缓存的办法来解决,不知可行不可行?
|
|
7楼#
发布于:2002-10-01 00:00
忘了说一点,其实造成写盘速度慢的真正原因是由于程序要一边播放一AVI文件,一边进行采集,造成了硬盘磁头移动太频繁,所以我想出内存缓存的办法来解决,不知可行不可行? 只要绝对IO速度(最大磁盘IO速度-播放对速度的影响)大于数据采集速度就可行,否则是不可能的... :mad: :mad: :mad: |
|
|
8楼#
发布于:2002-10-01 02:45
几秒就用完200m,笔记本硬盘现在没有这么快哦,就是台式机上的最新式硬盘都勉强啦
|
|