Video 使用DirectShow筛选器进行编码

Video 使用DirectShow筛选器进行编码,video,directshow,dmo,Video,Directshow,Dmo,我正在将原始图像编码到windows上的avi文件中,可能使用directshow过滤器。使用的编解码器类型将由用户选择。我已经使用windows视频(VFW)做了类似的事情 这很好,因为它提供了简单的api来压缩数据并将其写入文件。这次我想使用directshow框架来提供directshow支持 然而,在检查MSDN时,我发现不同的编解码器有不同类型的过滤器,因此没有单一的接口。 每次切换编解码器时是否需要在不同的过滤器之间切换 此外,根据MSDN,DMO与Directshow的不同之处在于

我正在将原始图像编码到windows上的avi文件中,可能使用directshow过滤器。使用的编解码器类型将由用户选择。我已经使用windows视频(VFW)做了类似的事情 这很好,因为它提供了简单的api来压缩数据并将其写入文件。这次我想使用directshow框架来提供directshow支持

然而,在检查MSDN时,我发现不同的编解码器有不同类型的过滤器,因此没有单一的接口。 每次切换编解码器时是否需要在不同的过滤器之间切换

此外,根据MSDN,DMO与Directshow的不同之处在于,它们也可用于编码。

那么,我应该使用哪一个来支持最大数量的编解码器呢


请分享您的想法。

不同的编解码器可用于不同的接口,因为在API开发过程中,已经出现了多个API

  • 有用于Windows VCM视频编码器的视频
  • 有视频编码DMO
  • 有视频编码MFT(一些可能是双DMO/MFT对象)
  • 有视频编码DirectShow过滤器
    • DirectShow包装了VFW/VCM编码器并使其可供DirectShow使用
    • DirectShow为DirectShow提供合适的DMO
因此,数学是,在DirectShow中,大多数编码器都是现成的


其他因素,如编解码器的特殊性和适用性、编码/容器限制,以及体面的编码器通常不免费提供这一事实——这都严重限制了当您设计应用程序时,这种方法的使用和价值,因为它可以与用户选择的各种视频编码器一起工作,通过标准的知名接口/API

你好,罗曼,谢谢你的输入,我采用了directshow的方式,从PushSource过滤器开始,但是我无法在每次收到帧时都将其传递给过滤器。示例中描述的pushsource过滤器首先将所有图像加载到内存中,然后运行filter graph。然而,在我的例子中,我希望以循环的方式将一帧一帧地传递给过滤器。我的观点是,尽管DirectShow提供了最广泛的编码器选择,但您通常不会想要这种灵活性。相反,您需要一个或几个可靠的工作良好。虽然DirectShow非常有意义,但这并不一定是DirectShow。至于PushSource。。。它演示了合成视频帧序列的交付,通常来自预先约定的媒体类型/格式的缓冲池。这通常与可用的视频编码器兼容,特别是在原始未压缩视频的情况下。好的,我想在开始实施之前,我会花更多的时间进行分析。在任何情况下,我有一个使用ffmpeg的实现,另一个使用VFW的实现,这两个实现在编码方面都很好,但仍然需要添加Directshow编码器。我想我需要在内部对此进行更多的讨论,比如我们通过添加directshow做了哪些额外的增值。谢谢你的意见。