我正在使用 SourceReader MediaFoundation 技术开发一个桌面多媒体流应用程序。
我正在使用 USB 摄像头设备来显示流媒体。该相机支持 2 种视频格式:YUY2 和 MJPG.
对于 1980x1080p YUY2 视频分辨率,仅接收 60fps 的 48fps。我从 MSDN 页面获取了 YUY2-RGB32 转换并在我的应用程序中使用(Note:我没有使用任何变换过滤器进行颜色转换)。
对于 MJPG 视频格式,我使用MJPEG 解码器 MFT转换MJPG - YUY2 - RGB32,然后使用Direct3D9在窗口上显示。对于特定分辨率,我面临帧速率从 60fps 下降到 30fps(Ex:1920x1080 60fps 但绘图仅 30-33fps)。
我通过两种方式在 Graphedit 中进行了验证以确认过滤器:
Added MJPEG 解压缩过滤器并构建了 MJPG 视频格式的图表来检查全高清分辨率的 fps,并显示 60fps 的 28fps。
Added AVI 解压缩过滤器并构建了 MJPG 视频格式的图表来检查全高清分辨率的 fps 及其显示的 60fps。
我在很多网站上搜索过用于媒体基础的 AVI 解压缩器,但没有成功。
有人确认一下,MFT 中有可用的过滤器吗?
Microsoft 为 Windows [最新版本] 提供了库存 Motion JPEG 解码器:
-
MJPEG 解压缩过滤器 https://msdn.microsoft.com/en-us/library/windows/desktop/dd390691用于DirectShow
- 适用于媒体基础的 MJPEG 解码器 MFT
据我所知,它们不共享代码库,但是两者都不应该是性能高效的解码器。
您使用 GraphEdit 意味着您正在尝试 DirectShow 解码器,而 AVI Decompressor 可能正在使用您未识别的另一个(Windows 视频)编解码器。
对于 Media Foundation,如果您拥有相应的硬件和驱动程序,您也许可以使用 Intel Hardware M-JPEG Decoder MFT 或 NVIDIA MJPEG Video Decoder MFT。据推测,供应商特定的解码器可提供更好的性能,并且与通用软件同行相比也具有更高的优先级。除此之外,对于 MFT 外形规格,您可能需要考虑商业解码器和/或定制开发的解码器,因为 API 本身并不那么流行,无法提供广泛的选项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)