【问题标题】:H.264 encoder filter for DirectShowDirectShow 的 H.264 编码器过滤器
【发布时间】:2018-05-26 23:05:16
【问题描述】:

我正在尝试使用 DirectShow 录制视频,我需要一个 H.264 编码器过滤器。我试过安装:

x264vfw

喜欢这里的建议:

how to use x264 encoder with directshow

但使用视频压缩器枚举器:

IEnumMoniker* EnumIterator = nullptr;
if (DeviceDenumerator->CreateClassEnumerator(CLSID_VideoCompressorCategory, &EnumIterator, 
    0) != S_OK)
{
    return nullptr;
}

此过滤器仅针对 32 位应用程序列出。对于 x64 应用程序,它不会出现。

如何安装该视频压缩器的 x64 版本?

【问题讨论】:

    标签: video h.264 directshow encoder


    【解决方案1】:

    对于 64 位应用程序,您确实需要 64 位版本的过滤器(也称为 x264vfw64),您可以查看 SourceForge 的以下说明:

    从 40_2491bm_40895 版本开始,用于 64 位 Windows (x264vfw64) 的版本合并到一个带有 32 位 Windows (x264vfw) 版本的安装程序中。所以如果你想使用最新版本的 x264vfw,你应该从这里下载它:http://sourceforge.net/projects/x264vfw/files/x264vfw/

    因此,installer referenced there 应该安装 32 位和 64 位版本的编码器过滤器。

    更新。 64 位版本的不可用似乎是known problem。该票解释说,64 位子系统没有包装器来获取 VFW 编码器,并且安装的 H.264 压缩对 DirectShow 仍然不可见。

    我个人认为这个描述并不准确。实际上,当请求 DirectShow 视频编码器枚举时,有一个层会选择较旧的 Video For Windows 编解码器(例如 x264vfw)并通过 AVI Compressor Filter 包装器公开它们,以便 DirectShow 应用程序可以利用此类旧编解码器。

    ... 启用 Video Compression Manager (VCM) 编解码器以加入过滤器图。每个编解码器都显示为过滤器的一个单独实例。

    64 位 Windows 的 64 位子系统仍然具有此过滤器(与票证解析中的语句相反)。然而,这种兼容层在 64 位 DirectShow 中不再可用可能确实是有原因的。目前看来,x264vfw 开发人员已经意识到了这个问题,并且没有或计划有解决方案。

    【讨论】:

    • 我已经安装了它,但它没有为 x64 添加任何视频压缩器。我已经尝试使用上面的代码和 GraphStudioNext x64,未列出 x264 视频压缩器(使用 x32 版本,我可以看到一个标记为“x264vfw - H.264/MPEG-4 AVC 编解码器”的压缩器)。我做错了什么?
    • 看起来这个版本确实有问题。我也没有看到安装/可用的 64 位编码器(尽管安装了文件 x264vfw64.dll)。也许你可以尝试一个可能没问题的早期版本。
    • 好的,我会尝试使用早期版本。您知道使用 H.264/MPEG-4 格式压缩视频的任何其他解决方案或任何其他 DirectShow 过滤器吗?
    • 我不知道免费和/或广泛使用的 DirectShow H.264 编码器。存在商业过滤器。我自己过去曾几次在 x264 上开发过 DirectShow 包装器,因为没有开箱即用的解决方案。目前我会考虑使用硬件辅助 H.264 编码(比纯软件 x264 更可取),因为 AMD、Intel、Nvidia 三大供应商在其 GPU 中都有各自的功能。不过,这仍然需要为 DirectShow 定制开发的包装器。
    猜你喜欢
    • 2020-04-18
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 2016-06-07
    • 2012-10-20
    相关资源
    最近更新 更多