视频抓图的延迟问题
在抓取视频文件中的帧跟抓取视频设备流中的帧中均发现有明显的延迟,但是专业的视频播放器不会有这种现象(我用的专业视频软件是在暂停后捕捉的)。
我用sample grabber的两种工作方式都试过,捕获的图片都有明显的延迟。不知道是怎样才能准确的捕获帧(按捕获图片按钮瞬间的帧)。试过暂停后取图也是同样的效果。
[解决办法]
grabber filter 是一个CTransInPlaceFilter,它的输入输出PIN的Sample是同一个管理器,即使用相同的数据缓存,如果后面接的Renderer的话,这块BUFFER是由Renderer管理的,Renderer要和一些硬件打交道(如 显卡),所以读写BUFFER的时候就很慢,那么画面就会顿了。
解决方案,简单的就是在grabber 后面接其它的filter,作个filter可以什么都不做,再在后面接Renderer。要彻底解决这个问题,需要写一个CTransfromFilter ,在这个filter的输入Sample里完成grabber的功能。。。。。。。。