Media Foundation Capture - 如何检测真正的原生输入格式

Posted

技术标签:

【中文标题】Media Foundation Capture - 如何检测真正的原生输入格式【英文标题】:Media Foundation Capture - how do you detect the true native input format 【发布时间】:2017-11-17 16:41:14 【问题描述】:

我有几个视频转换器盒(Marshall VAC-11SU3、Marshall VAC-11HU3、Magewell USB Capture SDI、Blackmagic UltraStudio Express),没有摄影机。 它们都将输入视频信号插入各自的 SDI 或 HDMI 端口。

问题在于 GetNativeMediaType 始终返回与 GetMediaTypeByIndex 为索引 0 所做的相同格式,而不管进入 SDI/HDMI 端口的实际视频格式如何。

到目前为止,我看到的每个 Media Foundation 示例都有一个用户界面来选择“正确”的原生格式。此菜单由设备的 GetMediaTypeCount 和 GetMediaTypeByIndex 填充。

我的用户不知道该选择什么!

我们一直在使用 Blackmagic 的 DeckLink API,我们的用户可以在 UI 中看到传入的视频信号格式。 我们想扩大对多家设备制造商的支持,但这一家让我很难过。

【问题讨论】:

【参考方案1】:

Media Foundation 没有采用您在最近的 Blackmagic 硬件中使用的信号格式检测概念(顺便说一下,早期的 Blackmagic 产品不提供检测)。

视频源驱动程序确实可以将它在线路上看到的媒体类型枚举为第一个GetNativeMediaType 输出和/或在流会话期间提供动态格式更改为这种格式。 Media Foundation 视频源大多假设类似网络摄像头的设备,并具有固定类型的枚举顺序。

我不会认为 Blackmagic 驱动程序会有所不同,因为它主要模仿网络摄像头,因此通过 WDM 驱动程序可以使用标准 API 使用 Blackmagic 设备输入。如果需要扩展功能,例如信号检测,Blackmagic 建议使用他们的 DeckLink SDK(顺便说一句,这很好)。

【讨论】:

感谢您的验证。这就是我认为的情况。

以上是关于Media Foundation Capture - 如何检测真正的原生输入格式的主要内容,如果未能解决你的问题,请参考以下文章

未找到处理 Intent act=android.media.action.IMAGE_CAPTURE 的 Activity

Cordova Media Capture - 查找音频文件的持续时间

Cordova Media Capture CaptureVideoOptions 持续时间不起作用

Windows Media Foundation 音视频采集 小记

Media Foundation 无法检测到捕获设备

Windows Media Foundation 枚举音频设备