一、解决方案
抓图就是保存视频帧,对于有硬编解码的视频,我们需要在编码前,或者解码后,获得视频帧。考虑到准确定位到要抓取的画面的帧,在接收流上做,是一个不错的选择。因为硬编解码的存在,好多事情都变得不那么简单了,比如GetCurrentImageFilter方法肯定不行了,在解码filter后连接一个抓图filter也不能达到预期效果,测试发现这个filter虽然连接上了,但是却工作不了,因为硬编码最后数据放到了显存中,硬解码filter跟最终的EVR(Enhanced Video Renderer)是经过了特定协商的,才成功把视频帧传下去了。如果中间插入一个filter,硬解码数据就不能成功传过来,所以就工作不了了。那么解决方案是什么了?一个比较好的也是较简单的就是在解码filter上添加一个接口,再解码完成后,保存视频帧,这完全不影响它正常传给EVR。那么我们面对的问题,就主要有以下几个:获得到显存中数据;将帧格式转为rgb格式;将rgb数据生成一个bmp图片。
二、获取数据
对于