4. DSPack抓帧
在例子PlayVideoCap中,还有抓帧和回放的功能。这用到第4个控件TSampleGrabber。
我们以前两个例子为基础,增加抓帧的功能。
打开前面的例子,然后:
1. 在DSPack中选择TSampleGrabber控件,放到窗口上。然后将其FilterGraph属性设置为FilterGraph1。
2. 在选择一个标准控件TImage(在Additional页签中),放在窗口上。
3.讲一个没用的按钮的Caption改为“Snapshot”,在它的OnClick事件中写:
SampleGrabber1.GetBitmap(Image1.Picture.Bitmap);
前面两个例子都可以这样增加抓帧功能。不过,对于第二个例子(即操作摄像头的例子),需要做额外的修改,就是:
将
RenderStream(@PIN_CATEGORY_PREVIEW, nil, Filter as IBaseFilter, nil, VideoWindow as IbaseFilter);
改为
RenderStream(@PIN_CATEGORY_PREVIEW, nil, Filter as IBaseFilter, SampleGrabber as IBaseFilter, VideoWindow as IbaseFilter);
这样就可以了
我们以前两个例子为基础,增加抓帧的功能。
打开前面的例子,然后:
1. 在DSPack中选择TSampleGrabber控件,放到窗口上。然后将其FilterGraph属性设置为FilterGraph1。
2. 在选择一个标准控件TImage(在Additional页签中),放在窗口上。
3.讲一个没用的按钮的Caption改为“Snapshot”,在它的OnClick事件中写:
SampleGrabber1.GetBitmap(Image1.Picture.Bitmap);
前面两个例子都可以这样增加抓帧功能。不过,对于第二个例子(即操作摄像头的例子),需要做额外的修改,就是:
将
RenderStream(@PIN_CATEGORY_PREVIEW, nil, Filter as IBaseFilter, nil, VideoWindow as IbaseFilter);
改为
RenderStream(@PIN_CATEGORY_PREVIEW, nil, Filter as IBaseFilter, SampleGrabber as IBaseFilter, VideoWindow as IbaseFilter);
这样就可以了