【问题标题】:Does DirectShow allow one to decode virtually any video based on installed codecs?DirectShow 是否允许基于已安装的编解码器解码几乎任何视频?
【发布时间】:2017-12-04 21:52:52
【问题描述】:

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

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

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

【问题讨论】:

    标签: visual-studio directshow video-processing ms-media-foundation vfw


    【解决方案1】:

    DirectShow 灵活且对开发者开放。这种开放性不时被滥用,并受到批评:

    Codec hell (a term derived from DLL hell) is 当多个 DirectShow 过滤器因执行相同任务而发生冲突时。现在有大量公司以 DirectShow 过滤器的形式开发编解码器,导致出现了多个可以解码相同媒体类型的过滤器

    此外,DirectShow 多年来没有得到任何重大发展,因此有时被认为已被弃用,这并不完全正确,而且包括 Microsoft 自己在内的大量软件仍然严重依赖 DirectShow。 “… you will never get the same high quality video experience that you find with DirectShow” - 我在这里收集了一些报价,它们的信誉良好。

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

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

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

    【讨论】:

    • VFW 是否遭受任何编解码器地狱的困扰,多个 VFW 编解码器相互冲突?感谢您对我所有视频/媒体帖子的知识渊博的回答!
    • VFW API 要简单得多,而且你很少有很多第三方组件,因此它们相互竞争,那么 API 本身就没有这样的复杂程度,它不会选择你的组件预期的,所以你不会在那里面对编解码器的地狱。
    • VFW 的唯一问题是我在这方面可以看到可能缺少与 vfw 不兼容的编解码器,例如人们抱怨 VirtualDub 只是一个不兼容的 vfw 系统有非 vfw 编解码器。这是我必须研究的问题,如果 VFW 需要单独的编解码器,那么如果人们决定不制作针对 vfw 的编解码器,那么可能会缺少一些编解码器。我不知道是否有多种编解码器可以与 vfw 和其他所有编解码器合二为一。我是这个编程领域的新手,所以在开发早期做出错误决定之前尝试解决它。​​
    • 没有一体化的编解码器。 VFW 编解码器非常少见,在很多情况下 VFW 开发没有意义。 DirectShow “看到” VFW 编解码器,并通过提供包装器使它们可用。但它不能以另一种方式工作。尽管如此,还是有 x264vfw 并且与 DirectShow 相比,单独使用 VFW 编解码器要容易得多(如果您只需要窄编码部分而不需要其他任何东西)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 2022-01-18
    • 1970-01-01
    相关资源
    最近更新 更多