DirectShow之介面實戰篇(三) (轉)
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DirectShow之介面實戰篇(一) (轉)
- DirectShow之介面實戰篇(二) (轉)
- JMeter實戰(三) 介面使用JMeter
- JBuilder9.0+Weblogic7.0實戰篇之Session Bean篇 (轉)UIWebSessionBean
- JBuilder9+Weblogic7實戰篇之工具篇(JDK) (轉)UIWebJDK
- DirectShow系列講座之一——DirectShow系統概述 (轉)
- 機器學習實戰之開篇機器學習
- 足球戰術之Builder篇 (轉)UI
- DirectShow系列講座之三——開發自己的Filter (轉)Filter
- JBuilder9+Weblogic7實戰篇之工具篇(Weblogic) (轉)UIWeb
- JBuilder9+Weblogic7實戰篇之Filter運用篇 (轉)UIWebFilter
- JBuilder9+Weblogic7實戰篇之工具篇(JDBC 2) (轉)UIWebJDBC
- JBuilder9+Weblogic7實戰篇之工具篇(JDBC 1) (轉)UIWebJDBC
- 【GNU/Linux實戰手記之Emacs篇 上】 (轉)LinuxMac
- GNU/Linux實戰手記之基本操作篇 (轉)Linux
- Flutter實戰之動畫實現篇Flutter動畫
- Java 8 Stream之實戰篇Java
- Linux效能優化實戰CPU篇之軟中斷(三)Linux優化
- JBuilder9.0+Weblogic7.0實戰篇之JSP+SERVLET篇 (轉)UIWebJSServlet
- JBuilder9+Weblogic7實戰篇之JSP使用JDBC篇 (轉)UIWebJSJDBC
- 足球戰術之adapter篇 (轉)APT
- Ant實戰篇 (一)(3) (轉)
- Ant實戰篇 (一)(4) (轉)
- 【GNU/Linux實戰手記之安裝配置篇】 (轉)Linux
- JBuilder9+Weblogic7實戰篇之Entity Bean運用篇(一) (轉)UIWebBean
- App專案實戰之路(三):原型篇APP原型
- JBuilder9+Weblogic7實戰篇Entity Bean運用(三) (轉)UIWebBean
- Flutter實戰之畫布使用篇Flutter
- Flutter實戰之基本佈局篇Flutter
- 實戰篇:如何做好SOAP介面效能測試?
- 介面自動化實戰之框架搭建框架
- 足球戰術之observer及memento篇 (轉)Server
- .Net微服務實戰之DevOps篇微服務dev
- kubernetes實戰篇之dashboard搭建
- Docker小白到實戰之開篇概述Docker
- JBuilder9+Weblogic7實戰篇之工具篇(ORACLE9i安裝) (轉)UIWebOracle
- DirectShow Utility
- 論機械製造企業ERP選型之實戰篇(轉)