DirectShow之接口实战篇

来源:[url]http://www.wangchao.net.cn/bbsdetail_28598.html[/url] DirectShow之接口实战篇(三) 播放速度的设定 需要使用ImediaPosition的方法。 MediaPosition.put_Rate(1);//正常 MediaPosition.put_Rate(0.25);//慢速 MediaPosition.put_Rate(2);//快速 单帧播放控制 需要使用IvideoFrameStep的方法 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; BitmapInfo: 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; 即可。 在这里,先总结这么多,希望对大家有所帮助,这些只是DirectX的一个皮毛,它可以实现的功能十分强大,我也只是把我在实际中的遇到的问题总结出来供大家参考,后面的工作还很多,我想我会逐步的更深入的总结这方面的经验发表出来与大家分享,好了,DirectShow接口施展篇到这里该完结了,如果大家有补充或者想法,请发表出来以便我总结整理,谢谢大家。 完结

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值