DirectShow(有时缩写如DS或DShow),开发代号Quartz,是一种由微软公司开发的能够让软件开发者对媒体文件执行各种不同处理的应用程序设计接口。它是微软公司对早先Windows视频科技的一次更新。基于微软公司Windows组件对象模型(COM)框架,DirectShow为大部份微软公司程序设计语言提供了一个媒体的普遍接口,而且是一个可扩展的,能在使用者或开发者的命令下播放或记录媒体文件的,以Filter为基础的框架。DirectShow开发工具及凭证被加入到微软公司SDK平台的一部份。Windows Media Player这样的应用程序运用DirectShow或者它的各种衍生来播放来自文件或是互联网上的内容。DirectShow's的最大的竞争对手是苹果计算机的QuickTime框架。
历史
ActiveMovie,开发代号Quartz,这个由Geraint Davies为微软公司设计的DirectShow的前身,在Windows 3.0时代,是作为一种对当时最流行的媒体平台QuickTime的回应而开发的。ActiveMovie最早的出现是被附加在Windows 95上面的并且需要系统安装了IE3.0。它当时的使命是作为IE的附件播放在其窗口内的媒体文件,正如当时QuickTime为Netscape以及IE提供的服务那样,它的另一个功能是作为Windows视频技术(VFW,Video For Windows)的一个替换,特别地为在VFW架构中难于处理的MPEG(移动图象专家组格式文件)文件提供辅助处理。
不同于为了读取媒体文件必须在循环中需要调用MoviesTask的为QuickTime设计的main C API,DirectShow以一种透明的方式处理这个问题。它在后台创建了一些线程来平缓的播放这些来自文件和互联网的数据与此同时不需要程序做很多工作。还跟QuickTime正好相反的是,在读取一段来自互联网数据而不是读取硬盘文件的时候没有特别的需要:DirectShow的filter graph摘录了来自程序的这些明细。然而,QuickTime(包括一个ActiveX控制)在这方面的发展相比之下逊色很多。
开发者很少直接创建DirectShow filters,他们通常使用被称为“基本类(DirectShow Base Classes)”的一组类别来处理大多数的工作。基本类的代码大小几乎是整个MFC library类大小的一半[來源請求]。所以即使有了基本类,DirectShow的COM物件仍然是相當的多,仍然會讓開發者在開發時倍感辛苦[來源請求]。DirectShow的API有时违反传统的COM规则,比如在方法中参数的用法等[來源請求]。因此,开发者也时常使用比DirectShow更高层次的API,如Windows Media Player SDK,它提供了较少COM介面的ActiveX控制[來源請求]。
DirectShow也因為僅支援非常有限的数位版权管理(DRM)功能而受到批评。相對的,Windows Media Player SDK支持較多的DRM功能[來源請求]。