0

我在比较 VFW、MediaFoundation 和 DirectShow。虽然 VFW 非常陈旧且过时,但它至少在编码和解码视频方面提供了很大的灵活性,因为您几乎可以选择任何编码器/解码器,AFAIK,而且您不仅限于只有微软选择的解码器/编码器的子集。

DirectShow 是否提供使用任何选择的编解码器解码(解压缩)多种视频类型(如 vfw)的能力,还是您必须只使用微软选择的子集?

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

4

1 回答 1

2

DirectShow 灵活且对开发者开放。这种开放性不时被滥用,是一个批评点:

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

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

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

DirectShow API 提供了最广泛的第三方组件选择,被 Internet 上的大量示例覆盖,比 VFW 强大得多,并且不像 Media Foundation 那样限制和稀缺。然而,它有些过时,依赖于定制开发中相当古老的 BaseClasses 代码库,并且通常已知有陡峭的学习曲线。

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

于 2017-06-30T21:41:05.197 回答