【问题标题】:Use DirectShow to capture to an AVI from a non DirectShow source使用 DirectShow 从非 DirectShow 源捕获到 AVI
【发布时间】:2012-02-02 20:08:36
【问题描述】:

这可能是一个愚蠢的问题,但我很难概念化我需要在这里做什么...过去我使用 DirectShow 连接到相机并使用源过滤器 AVI 捕获 AVI多路复用器,压缩过滤器,运行图表等......小菜一碟。 在这种特殊情况下,当我的非 DirectShow 相机驱动程序准备好缓冲区时,我会收到通知。我收到通知,然后我去抓取 BYTE* 并使用 GDI 渲染它。我现在还需要用这些缓冲区创建一个 AVI。 从概念上讲,每次收到缓冲区时,我都使用 vfw 之类的东西并写入 AVI 流是有意义的,当然 vfw 是旧技术,我也遇到了一些问题来让它工作(正如我在另一个论坛上发布的那样) . 如何将这些缓冲区推送到 DirectShow AVI Mux 并写入文件?我是否必须创建自己的源过滤器来接收这些缓冲区,然后将我的源过滤器和 avi mux 添加到过滤器图中? 感谢您的任何提示

【问题讨论】:

    标签: c++ directshow


    【解决方案1】:

    所以你有BYTE* 的视频帧数据。它非常接近你的假设。您的选择是使用 VFW AVIFileOpen 和朋友写入 AVI 文件,或将数据注入 DirectShow 管道。要执行后者,您通常制作类似 PushSource 的过滤器并从那里推送视频帧(通过 AVI Mux 到文件写入器)。

    【讨论】:

    • 谢谢罗曼。我将研究创建 PushSource 过滤器。虽然我认为我更喜欢使用 VFW,但它的工作量似乎更少。我尝试过,但 VFW 出现问题,此处描述为Problems creating AVI。我会继续插电。谢谢!
    • 如果您的视频已经被压缩,那么要写入 AVI 文件,您最好使用Video for Windows(毕竟您甚至不需要触摸过滤器)。如果您还需要压缩(并且尚未选择合适的压缩器)和/或与音频合并,那么DirectShow 可能是更好的选择。
    • 是的,我同意你的看法,我正在考虑在 vfw 中压缩视频,如果我需要压缩,似乎使用 DirectShow 才有意义。我将研究这两种方法以使它们正常工作。如果您对我在上一篇文章中提到的 VFW 问题有任何想法,我将不胜感激。否则非常感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多