DirectShow之介面實戰篇(三) (轉)

amyz發表於2007-08-14
DirectShow之介面實戰篇(三) (轉)[@more@]

DirectShow之介面實戰篇(三):namespace prefix = o ns = "urn:schemas--com::office" />

速度的設定

需要使用ImediaPosition的方法。

MediaPosition.put_Rate(1);//正常

MediaPosition.put_Rate(0.25);//慢速

MediaPosition.put_Rate(2);//

 

單幀播放控制

需要使用IvoFrameStep的方法

VideoFrameStep.Step(1, nil);

 

音量控制

需要使用IbasicAudio的方法

增加音量:
BasicAudio.get_Volume (&volume);//得到音量
volume:= volume +volumestep;
BasicAudio.put_Volume (volume);//增加一定的音量的分貝
減小音量:
BasicAudio.get_Volume (&volume); //得到音量
volume:= volume -volumestep;
BasicAudio.putVolume (volume); //減小一定音量的分貝

 

顯示放大縮小控制

只需改變Edit1的大小,然後使用IvideoWindow介面方法即可

VideoWindow.SetWindowPosition(0, 0, Edit1.Width, Edit1.Height);

 

單幀捕獲,抓圖

其實很多介面都提供了此功能,但是我更傾向於使用IsampleGrabber介面來實現,相對來說,高些。

這個控制起來做的工作稍微多些,首先,在開啟的時候

var  MediaType: TAM_MEDIA_TYPE;

ZeroMemory(@MediaType, SizeOf(TAM_MEDIA_TYPE));

  MediaType.majortype := MEDIATYPE_Video;//影片流

  MediaType.subtype := MEDIASUBTYPE_RGB24;//24點陣圖象

  MediaType.formattype := FORMAT_VideoInfo;

  SampleGrabber.SetMediaType(MediaType);//關聯介面

SampleGrabber.SetBufferSamples(True);

然後在抓圖按鈕事件中如下操作

var

  MediaType: TAM_MEDIA_TYPE;

  VideoInfoHeader: TVideoInfoHeader;

  Bitmnfo: TBitmapInfo;

  Bitmap: HBitmap;

  Buffer: Pointer;

  BufferSize: Integer;

begin

  SampleGrabber.GetConnectedMediaType(MediaType);

 

  ZeroMemory(@VideoInfoHeader, SizeOf(TVideoInfoHeader));

  CopyMemory(@VideoInfoHeader, MediaType.pbFormat, SizeOf(VideoInfoHeader));

 

  ZeroMemory(@BitmapInfo, SizeOf(TBitmapInfo));

  CopyMemory(@BitmapInfo, @VideoInfoHeader.bmiHeader, SizeOf(VideoInfoHeader.bmiHeader));

 

  Bitmap:=CreateDIBSection(0, BitmapInfo, DIB_RGB_COLORS, Buffer, 0, 0);

  SampleGrabber.GetCurrentBuffer(BufferSize, Buffer);

 

  Image1.Picture.Bitmap.Handle:=Bitmap

end;

即可。

 

在這裡,先總結這麼多,希望對大家有所幫助,這些只是的一個皮毛,它可以實現的功能十分強大,我也只是把我在實際中的遇到的問題總結出來供大家參考,後面的工作還很多,我想我會逐步的更深入的總結這方面的發表出來與大家分享,好了,DirectShow介面施展篇到這裡該完結了,如果大家有補充或者想法,請發表出來以便我總結整理,謝謝大家。

 

  完結


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-956604/,如需轉載,請註明出處,否則將追究法律責任。

相關文章