如何在 Windows 中使用 H264 视频编码器 MFT 编码位图

2023-12-30

我的应用程序对从 GDI 或 DXGI 方法捕获的帧进行编码。目前我正在使用帮助 x264 库进行编码。
AFAIK x264 是基于软件的库,我想在 GPU 的帮助下进行编码,这样它可以节省 CPU 周期,并且希望速度也会更快。
经过搜索,我发现了一个H.264 视频编码器 https://msdn.microsoft.com/en-us/library/windows/desktop/dd797816(v=vs.85).aspxMFT正在做h264编码。
但有几个问题已经为我解答了。
1)它比x264编码库更快吗?
2)可以借助此MFT对位图帧进行编码吗?
- 我只看到 MFVideoFormat_I420、MFVideoFormat_IYUV、MFVideoFormat_NV12、MFVideoFormat_YUY2、MFVideoFormat_YV12 这些格式受支持
3)它是硬件加速的(意味着它使用CPU或GPU)?
- 最初我的理解是它使用 GPU,但读完这篇文章后我感到困惑MFT 编码器 (h264) CPU 利用率高 https://stackoverflow.com/questions/29322263/mft-encoder-h264-high-cpu-utilization.
4)H.264视频编码器MFT可以独立使用而不使用接收器编写器,因为我必须在网络上发送数据?
5)windows下还有其他选择吗?

可能有些问题很愚蠢,请随意编辑。


Media Foundation H.264 视频编码器是软件编码器。根据我的[主观]经验,它比 x264 慢,也许更重要的是,x264 提供了更广泛的设置,特别是在选择速度与质量范围末端的模式时。无论哪种方式,普通 MS 编码器都不是硬件加速的。

但是,可能还有其他可用的 MFT(通常与相应的硬件驱动程序一起安装)可以执行硬件加速 H.264 编码。您可以通过枚举 MFT 来发现它们,也许最流行的是英特尔快速同步视频 (QSV) 编码器。

HardwareVideoEncoderTransform app http://alax.info/blog/1609进行枚举并为您提供相关详细信息:

典型输入是 NV12,有些提供其他输入选择(例如 32 位 RGB)。如果您需要其他格式,则必须预先转换输入。

硬件支持的编码器 CPU 消耗较低,其效率取决于硬件实现。是的,您可以独立、完全独立地使用它们,也可以将它们包装为 DirectShow 过滤器并包含在普通 DirectShow 管道中。

替代 H.264 编码器通常基于 SDK,或者以 DirectShow/MFT 形式对这些 SDK 进行包装,因为供应商以多媒体开发人员已经熟悉的众所周知的形式打包其实现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Windows 中使用 H264 视频编码器 MFT 编码位图 的相关文章

  • NTFS 连接点和符号链接有什么区别?

    在高水平上 两者之间唯一明显的区别NTFS 连接点 http msdn microsoft com en us library windows desktop aa365006 aspx and 符号链接 http msdn microso
  • 我如何移动粘性/捕捉 wpf 窗口

    当我移动 主 窗口时 我想移动两个或更多粘性窗口 我想做这样的事情 private void MainWindow PreviewMouseMove object sender MouseEventArgs e if e LeftButto
  • 每个进程每个线程的时间量

    我有一个关于 Windows 和 Linux 中进程和线程的时间量子的问题 我知道操作系统通常为每个线程提供固定的时间量 我知道时间量根据前台或后台线程而变化 也可能根据进程的优先级而变化 每个进程有固定的时间量吗 例如 如果操作系统为每个
  • 64 位大型 malloc

    malloc 失败的原因是什么 尤其是在 64 位中 我的具体问题是尝试在 64 位系统上分配一大块 10GB RAM 该机器有 12GB RAM 和 32GB 交换空间 是的 malloc 是极端的 但是为什么它会成为一个问题呢 这是在带
  • 在 C# 中使用反射列出枚举中的值

    我正在尝试使用反射来列出一个 Visual Studio 解决方案内的各个项目中的一些类的公共成员和方法 我尝试访问的所有类都是 C 的 并且它们都是从 C 类访问的 我用来进行这些调用的代码如下 public void PopulateE
  • MySQL 将 ÅäÖ 视为 AAO?

    这两个查询给了我完全相同的结果 select from topics where name Harligt select from topics where name H rligt 这怎么可能 看起来mysql在搜索时会将 翻译成aao
  • 使用 Windows 任务计划程序安排 [Virtualenv 相关] Python 脚本

    I want to schedule a python script to start at 3AM and break at 5PM every weekday However the problem arises when I need
  • 如何在子 shell 中运行 cmd.exe 批处理文件

    我有一个批处理文件 通常像这样调用 longjob cmd gt result txt 2 gt 1 这工作正常 但脚本在执行过程中更改了目录 将我的 shell 留在该目录中 这很麻烦 有没有办法在子 shell 中运行命令 同时仍然允许
  • Boost + Visual Studio 2010 + Windows 平台 SDK 7.1

    有人可以告诉我 bjam 的命令行开关或其他可以使用新的 Windows Platform SDK 7 1 工具链使用 VS2010 进行 boost 编译的东西吗 您可以在普通的视觉工作室项目中设置该选项 默认值是 v100 是平台 7
  • 使用 BitmapEncoder 生成时如何使 GIF 循环重复

    我能够使用 BitmapEncoder C WinRT 创建动画 gif 但是 我一直无法弄清楚如何让GIF循环回来并从头开始 没有尝试太多 因为我不确定要尝试什么 搜索了更多要在 GIF 上设置的属性 但找不到任何相关内容 好吧 终于能弄
  • MinGW Make 抛出“系统找不到指定的路径。”错误

    我正在尝试在 Windows 7 上使用 cmake 生成一个 c 项目 在实际创建项目之前 cmake 会对您的工具链进行快速测试 我正在使用 MinGW 这就是我的问题所在 Cmake 触发 make 构建 最终失败并返回 系统找不到指
  • 提取证书中主题属性的所有值

    我目前正在使用CertGetNameString http msdn microsoft com en us library windows desktop aa376086 28v vs 85 29 aspx提取每个主题属性的值 如下所示
  • Delphi中使用FindVCLWindow调用WinHelp32(WinXP Pro SP3 32bit)

    有什么问题吗 procedure TForm1 VCLHelpClick Sender TObject var Ctrl TWinControl begin Ctrl FindVCLWindow Mouse CursorPos if Ctr
  • C++ 使用 Windows 命名管道

    由于某种原因 桅杆和从属装置都失败了 但是我可以找到任何关于它们如何工作的好例子 所以我不确定我哪里出了问题 在 ConnectNamedPipe 之后 主设备永远不会退出 WaitForSingleObject 并且从设备在第一个 boo
  • 如何在 Ubuntu VirtualBox 中运行 Meteor 应用程序并使用 Windows 主机上的编辑器进行编辑?

    我希望在运行 Ubuntu 的 virtualbox 来宾中运行一个用于开发目的的流星服务器 该项目将位于主机上的一个文件夹内 该文件夹将共享给来宾 该文件夹本身位于 Dropbox 文件夹内 这样我可以在多个虚拟机和工作站之间共享开发 但
  • 无法加载 JNI 共享库 (JDK)

    当我尝试打开时Eclipse http www eclipse org 弹出对话框指出 无法加载 JNI 共享库 C JDK bin client jvm dll 此后 Eclipse 强制关闭 我想提出以下几点 我检查了这条路径上是否存在
  • Windows批处理文件:将结构转换为单行字符串

    我需要将这个艰巨的任务作为批处理文件来完成 这对于 C 来说不是最困难的 但在 DOS 中是一个地狱 至少对我来说 我需要将结构转换为单个 var 字符串 才能在我的程序中再次将它们转换为该结构 别担心回归 一切都已经完成了 该结构的大小会
  • 如何验证文件名称在 Windows 中是否有效?

    是否有一个 Windows API 函数可以将字符串值传递给该函数 该函数将返回一个指示文件名是否有效的值 我需要验证文件名是否有效 并且我正在寻找一种简单的方法来完成此操作 而无需重新发明轮子 我正在直接使用 C 但针对的是 Win32
  • 将目录压缩为单个文件的方法有哪些

    不知道怎么问 所以我会解释一下情况 我需要存储一些压缩文件 最初的想法是创建一个文件夹并存储所需数量的压缩文件 并创建一个文件来保存有关每个压缩文件的数据 但是 我不被允许创建许多文件 只能有一个 我决定创建一个压缩文件 其中包含有关进一步
  • Python3 在 DirectX 游戏中移动鼠标

    我正在尝试构建一个在 DirectX 游戏中执行一些操作的脚本 除了移动鼠标之外 我一切都正常 是否有任何可用的模块可以移动鼠标 适用于 Windows python 3 Thanks I used pynput https pypi or

随机推荐

  • C# 原始数组是易失性的吗?

    我这样声明数组private double array new double length 在一个线程中更新此数组项并在另一个线程中读取是否安全 我会有最新的价值吗 注意我不枚举数组 我仅通过索引访问其项目 数组不是线程安全的 从MSDN
  • gcc 找不到模板专门化

    我的网络代码使用模板专门化来序列化不能简单复制的类型 我定义了一个通用模板 template
  • 如何为 IntelliJ 社区版添加 hibernate 支持?

    我是 Hibernate 框架的新手 主要熟悉 IntelliJ IDE 据我了解 IntelliJ 社区版默认不提供 Hibernate 框架支持 还有另一种方法可以将 Hibernate 单独包含到 IntelliJ 项目中吗 None
  • scikit-learn k-means:预测方法的真正作用是什么?

    当我使用 scikit learn 的 k means 实现时 我通常只调用fit 方法 这足以获得聚类中心和标签 这predict 方法用于计算标签 甚至fit predict 方法是为了方便起见 但如果我只能使用fit 目的是什么pre
  • 如何修复 PyCharm 上的 vcvarsall 错误? [复制]

    这个问题在这里已经有答案了 我使用的是 64 位 Windows 7 SP1 我有 PyCharm 社区版 4 0 4 和 Python 3 4 2 我想在 PyCharm 中安装新包 在 PyCharm 中 当我去File gt Sett
  • HTML5离线认证

    我正在寻求有关如何最好地控制对主要离线使用的 HTML5 应用程序的访问的建议 批评 该应用程序使用 IndexedDB 本地和会话存储的组合来存储数据 以便可以离线使用 数据 页面通过 HTTPS 提供 目的是最大限度地降低平板电脑 个人
  • 如何制作可移植的 isnan/isinf 函数

    我一直在使用isinf isnanLinux 平台上的功能完美运行 但这在 OS X 上不起作用 所以我决定使用std isinf std isnan它可以在 Linux 和 OS X 上运行 但英特尔编译器无法识别它 我猜这是英特尔编译器
  • 重新启动以循环迭代列表python3

    蟒蛇 3 6你好 我试图用 for 循环迭代列表 只要条件得到确认 我就必须重新启动循环 在C中我会这样做 for i 0 i lt 10 i if list i something i 0 在这里我试图这样做 for x in listP
  • Android 应用程序因 Vitamio 库而崩溃

    我已经为 Android 应用程序上的流媒体视频编写了一个简单的代码 我使用了 Vitamio 库 遵循了所有必要的步骤来集成到项目中 视频无法播放并且应用程序在加载时崩溃 package com test bufferapp import
  • 获取wordpress父模板名称

    我需要获取页面父模板名称 我知道我可以对当前页面使用 get page template 但似乎没有办法获取父页面 是否也可以只获取模板名称而不是其路径 是的 get page template 只能返回当前页面的文件路径 请改用 get
  • 为什么我应该在 mobx 中使用动作装饰器

    即使在阅读了文档之后 我也试图了解 mobx 中动作装饰器的有用性 https mobx js org refguide action html https mobx js org refguide action html 仍然想知道为什么
  • 函数内 ddply 未找到对象错误

    这确实挑战了我调试R代码的能力 我想用ddply 将相同的函数应用于按顺序命名的不同列 例如 a b c 为此 我打算重复将列名称作为字符串传递并使用eval parse text ColName 以允许函数引用它 我从另一个答案中获取了这
  • 更改 ASP.NET Core 中的控制器路由

    所以我有一个HomeController 访问它Actions我必须输入url com home action 是否可以将其更改为其他类似的东西url com anothernamethatpointstohomeactually acti
  • 如何从类 ID 中识别 Axapta 类名称?

    请问有人可以帮我理解批量疯狂吗 我正在尝试调试具有大约 50 个批处理作业的 Axapta 3 0 实现 大多数批处理类没有实现description 方法 所以当你查看批次清单表单 基本 gt gt 查询 gt gt 批次列表 描述字段为
  • 测试中未使用自定义的ObjectMapper

    我使用的是 Spring 框架 版本 4 1 6 带有 Spring Web 服务 但没有 Spring Boot 为了学习该框架 我正在编写一个 REST API 并进行测试以确保从命中端点收到的 JSON 响应是正确的 具体来说 我正在
  • 正则表达式 - 排除名称的单词列表

    我正在尝试制作一个接受此内容的正则表达式 仅限 a z 0 9 字符 最小长度为 3 admin static my 和 www 被拒绝 对于第一部分 我已经设法做到了 a zA Z0 9 3 但我不知道如何排除前面列出的单词 例如 这意味
  • Java 日历/日期 2010 年 10 月 2 日有错误吗?

    我不确定我做错了什么 但我有一段代码可以计算两个日期之间的天数 如下所示 final Calendar first new GregorianCalendar 2010 Calendar OCTOBER 1 final Calendar l
  • 如何使用 nanosleep 随机睡眠时间?

    我正在尝试使用 nanosleep 函数让我的进程休眠 1 10 秒之间的随机时间 我使用 srand 为我的随机数生成器提供种子 并带有进程 ID 即我调用 srand getpid 然后使用 struct timespec delay
  • Kubernetes Pod 内存与 cgroup

    我在 Kubernetes pod 中运行 apache 并且对 apache 进程的随机 OOM 终止感到困扰 并且我不确定原因 Pod 有 600M 内存限制 即使 PHP 每次运行有 128 MB 限制 它似乎也可以很容易地消耗它 观
  • 如何在 Windows 中使用 H264 视频编码器 MFT 编码位图

    我的应用程序对从 GDI 或 DXGI 方法捕获的帧进行编码 目前我正在使用帮助 x264 库进行编码 AFAIK x264 是基于软件的库 我想在 GPU 的帮助下进行编码 这样它可以节省 CPU 周期 并且希望速度也会更快 经过搜索 我