hi,大家好,最近我在用Silverlight做一个关于网路摄像头的项目。我们要从摄像头中把每一帧的数据取出来,所以用了VideoSink类的OnSample方法获取数据。但问题是OnSample的调用频率达不到摄像头的帧率。也就是或,假设我的摄像头是30帧/秒,但OnSample函数却不能在一秒内调用30次。
我的程序的情况是:在OnSample方法中向一个buffer写数据,在一个线程中读取这个数据。在读写之间通过AutoResetEvent进行线程同步。然后在程序中还有几个其他的线程。
我的问题是:想请大家集思广益一下,是什么引起了这个问题。是不是由于线程之间存在时间片的争夺,或者OnSample这个方法并不能保证一定能够响应每一个摄像头捕捉一帧完毕的时间(我的意思是是不是微软就是把OnSample设计成一个优先级比较低的方法,而保证其他程序运行的质量)。
谢谢。