DirectShow 是否允许基于已安装的编解码器解码几乎任何视频?



我正在比较VFW,MediaFoundation和DirectShow。尽管 VFW 非常古老和过时,但它至少在编码和解码视频方面具有很大的灵活性,因为您几乎可以选择任何编码器/解码器 AFAIK,并且您不仅限于只有微软选择的解码器/编码器的子集。

DirectShow 是否提供使用任何选定的编解码器解码(解压缩(多种视频类型(如 vfw(的功能,还是必须仅使用 Microsoft 选择的子集?

事实上,有些 API 需要编写自己的自定义系统来解码,但我想知道"开箱即用"功能(即用型(,而无需那么多自定义代码。VFW(Windows视频(似乎通过使用预先准备好的解码器/编码器来提供这一点,而无需您进行任何工作,但是VFW已经过时并且在某些时候可能会过时 - 但似乎需要最少的编码工作。

DirectShow非常灵活,对开发人员开放。这种开放性不时被滥用,并受到批评:

编解码器地狱

(一个派生自DLL地狱的术语(是指多个DirectShow过滤器在执行同一任务时发生冲突。现在,许多公司都以DirectShow过滤器的形式开发编解码器,导致存在多个可以解码相同媒体类型的过滤器

此外,DirectShow多年来没有得到任何重大发展,因此有时被认为是弃用的,这并不完全正确,包括Microsoft自己的软件在内的大量软件仍然严重依赖DirectShow。"...您将永远无法获得与DirectShow相同的高质量视频体验" - 我在这里收集了一些报价,它们信誉良好。

是的,您可以灵活地构建管道,并使用您选择的解码器/编码器(以及统称为"过滤器"的管道的其他部分(。

DirectShow API提供了最广泛的第三方组件选择,被互联网上的大量样本所覆盖,比VFW更强大,不像Media Foundation那样严格和稀缺。然而,它有些过时了,依赖于定制开发中相当旧的 BaseClasses 代码库,并且通常已知具有陡峭的学习曲线。

要快速了解DirectShow,您可以下载用于DirectShow开发GraphStudioNext的最佳交互式工具,并使用菜单File,Render Media File为.MP4等标准媒体文件构建播放管道。您将能够以交互方式更改管道,这也展示了您应该以编程方式执行的操作。

最新更新