我正在使用SourceReader MediaFoundation技术为Desktop开发多媒体流应用程序。
我正在使用USB摄像头设备来显示流媒体。相机支持2种视频格式: YUY2和MJPG 。
对于1980x1080p YUY2视频分辨率,60fps仅接收48fps。我从MSDN页面获取了YUY2-RGB32转换并在我的应用程序中使用(注意:我没有使用任何变换滤镜进行颜色转换)。
对于MJPG视频格式,我使用 MJPEG解码器MFT 转换MJPG - YUY2 - RGB32,然后使用Direct3D9在窗口上显示。对于特定分辨率,我面临的帧速率从60fps降至30fps( Ex: 1920x1080 60fps,但仅绘制30-33fps)。
有两种方法,我在Graphedit中验证了过滤器的确认:
添加了 MJPEG Decompressor过滤器,并为MJPG视频格式构建了图表,以检查全高清分辨率的fps,并以60fps显示28fps。
添加了 AVI Decompressor过滤器,并为MJPG视频格式构建了图表,以检查全高清分辨率的fps并显示60fps。
我在很多网站上搜索了AVI解压缩器,但没有运气。
有人确认,MFT中是否有可用的过滤器?
答案 0 :(得分:2)
Microsoft发布[最近版本] Windows的Motion JPEG解码器:
据我所知,那些不共享代码库,但两者都不应该是性能高效的解码器。
您使用GraphEdit意味着您正在尝试使用DirectShow解码器,并且AVI解压缩器应该使用您未识别的另一个(Video for Windows)编解码器。
对于Media Foundation,您可以使用英特尔硬件M-JPEG解码器MFT或NVIDIA MJPEG视频解码器MFT您是否拥有各自的硬件和驱动程序。据推测,与通用软件同行相比,供应商特定的解码器可提供更好的性能,并且具有更高的优先级。除此之外,对于MFT外形,您可能需要查看商业解码器和/或定制开发,因为API本身并不是很受欢迎,无法提供多种选项。