我正在使用 directshow 从我的网络摄像头抓取帧。在网络摄像头的配置过程中(当我设置分辨率、fps 等时)我可以从摄像头中获得多种选择。 (其中 47 个)。
目前我使用 for 循环遍历摄像头的所有可用设置,我只是在控制台中打印这些值。但是我没有很好的方法来打印 Media 子类型的值。
有没有什么好的方法可以打印媒体子类型的实际名称?
现在我这样测试:
if(mT->subtype == MEDIASUBTYPE_MJPG){
printf(" MEDIASUBTYPE_MJPG ");
} else {
printf(" ----- ");
}
(mT = AM_MEDIA_TYPE)这不是一个好方法。我想使用打印子类型实际名称的东西。
谢谢!
媒体子类型只是一个GUID
标识符,没有名字。如果不直接与您知道的值进行比较,就无法将其转换为用户友好的字符串。
这里只有一个异常(exception),它是从四字符代码 (FourCCs) 映射而来的标识符。在 FOURCCMap
class 中的 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
// ...
我是一名优秀的程序员,十分优秀!