DirectShow之接口实战篇(一)
现今自己编程做一个多媒体播放工具是一件很令人开心愉悦的事情,但如果使用MediaPlay控件开发则会受到很多限制,自己的很多好的创意想法都无法或者很难实现,如果利用微软的DirectX接口开发则可以充分的将作者的独特想法付诸于实现,何乐而不为呢!!不过关于DirectShow接口的开发说明文档实在是少之又少,仅有的一些不是英文的就是一些关于理论方面的,真正关于接口实战编程而且是用Delphi开发工具实现的更是凤毛麟角,使很多人都望而却步。在这里,我把我应用Directshow开发的心得以及我搜集到一些资料重新整理编辑出来公布,希望对所有由此兴趣的同仁有所帮助,就算达到了我的目的。废话少说,进入正文。
既然是接口实战篇,就先把一些常用的接口列出来,让大家有一些基本的认识,都是用来做什么的,什么时候我们会需要用到此接口。
IFilterGraph
过滤通道接口
IFilterGraph2
增强的IFilterGraph
IGraphBuilder
最为重用的COM接口,用于手动或者自动构造过滤通道Filter Graph Manager
IMediaControl
用来控制流媒体,例如流的启动和停止暂停等,播放控制接口
IMediaEvent
播放事件接口 ,该接口在Filter Graph发生一些事件时用来创建事件的标志信息并传送给应用程序
IMediaEventEx
扩展播放事件接口
IMediaPosition
播放的位置和速度控制接口(控制播放位置只能为设置时间控制方式)
IMediaSeeking
另一个播放的位置和播放速度控制接口,在位置选择方面功能较强.设置播放格式,多种控制播放方式.常用的有:(1)TIME_FORMAT_MEDIA_TIME单位100纳秒。(2)TIME_FORMAT_FRAME按帧播放
IBasicAudio
声音控制接口
IBasicVideo
图像控制接口(波特率,宽度,长度等信息)
IVideoWindow
显示窗口控制接口 (有关播放窗口的一切控制,包括caption显示,窗口位置控制等)
ISampleGrabber
捕获图象接口(可用于抓图控制)
IVideoFrameStep
控制单帧播放的接口
好了,熟悉了应用DirectShow应用开发常用的接口后,我们就通过一个实例媒体播放器来熟悉掌握这些接口,实例的代码虽然简单,但五脏俱全,功能强大,同时也了解一下应用DirectShow开发一般常用的步骤。
未完待续