全部博文(282)
分类:
2007-09-20 23:03:16
现今自己编程做一个多媒体播放工具是一件很令人开心愉悦的事情,但如果使用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开发一般常用的步骤。