1

我正在使用 directshow 从我的网络摄像头中抓取帧。在网络摄像头的配置过程中(当我设置分辨率、fps 等时),我可以从摄像头获得多种选择。(其中 47 个)。

目前我使用 for 循环遍历 cam 的所有可用设置,我只是在控制台中打印值。但是我没有很好的方法来打印 Media 子类型的值。

有没有打印媒体子类型实际名称的好方法?

现在我像这样测试它:

if(mT->subtype == MEDIASUBTYPE_MJPG){
     printf(" MEDIASUBTYPE_MJPG ");
} else {
     printf(" ----- ");
}

(mT = AM_MEDIA_TYPE) 这不是一个好方法。我想使用打印子类型实际名称的东西。

谢谢!

4

1 回答 1

1

媒体子类型只是一个GUID标识符,无名。如果不直接与您知道的值进行比较,就无法将其转换为用户友好的字符串。

这里只有一个例外,它是从四字符代码 (FourCC) 映射的标识符。FOURCCMap在课堂上查看 MSDN 上的详细信息,您可能想要执行以下操作:

if(memcmp(&mT->subtype.Data2, &MEDIASUBTYPE_MJPG.Data2, sizeof (GUID) - offsetof(GUID, Data2)) == 0)
{
  // NOTE: This is FourCC!
  CHAR pszValue[5];
  *((UINT32*) pszValue) = mT->subtype.Data1;
  pszValue[4] = 0;
  _tprintf(_T("Media Subtype is FourCC %hs\n"), pszValue);
} else
// ...
于 2013-05-16T15:41:32.837 回答