0

我正在尝试为罗技相机枚举视频捕获格式。我正在使用这个

我得到了以下条目

MF_MT_FRAME_SIZE 640 x 480
MF_MT_AVG_BITRATE 6619136
MF_MT_COMPRESSED 1
MF_MT_H264_MAX_MB_PER_SEC 245,0,245,0,0,0,0,0,0,0
MF_MT_MAJOR_TYPE MFMediaType_Video
MF_MT_H264_SUPPORTED_USAGES 3
MF_MT_H264_SUPPORTED_RATE_CONTROL_MODES 15
MF_MT_AM_FORMAT_TYPE {2017BE05-6629-4248-AAED-7E1A47BC9B9C}
MF_MT_H264_SUPPORTED_SYNC_FRAME_TYPES 2
MF_MT_MPEG2_LEVEL 40
MF_MT_H264_SIMULCAST_SUPPORT 0
MF_MT_MPEG2_PROFILE 256
MF_MT_FIXED_SIZE_SAMPLES 0 MF_MT_H264_CAPABILITIES 33 MF_MT_FRAME_RATE 30 x 1
MF_MT_PIXEL_ASPECT_RATIO 1 x 1
MF_MT_H264_SUPPORTED_SLICE_MODES 14
MF_MT_ALL_SAMPLES_INDEPENDENT 0
MF_MT_FRAME_RATE_RANGE_MIN 30 x 1
MF_MT_INTERLACE_MODE 2 MF_MT_FRAME_RATE_RANGE_MAX 30 x 1
MF_MT_H264_RESOLUTION_SCALING 3
MF_MT_H264_MAX_CODEC_CONFIG_DELAY 1
MF_MT_SUBTYPE MFVideoFormat_H264_ES
MF_MT_H264_SVC_CAPABILITIES 1

注意:我已将媒体类型调试代码中的函数修改如下。当我运行程序时,我得到 cElement = 10,并且我将 pElemet 放入 for 循环中以获取此值 MF_MT_H264_MAX_MB_PER_SEC 245,0,245,0,0,0,0, 0,0,0

case VT_VECTOR | VT_UI1:
{
        //DBGMSG(L"<<byte array Value>>");
        // Item count for the array.
        UINT  cElement = var.caub.cElems/sizeof(UINT);
        // Array pointer.
        UINT* pElement = (UINT*)(var.caub.pElems);
        for( int i = 0; i < cElement;i++)           
            DBGMSG(L"%d,", pElement[i]);

}

我无法找出这些值的含义

  1. MF_MT_AM_FORMAT_TYPE {2017BE05-6629-4248-AAED-7E1A47BC9B9C}

  2. MF_MT_H264_MAX_MB_PER_SEC 245,0,245,0,0,0,0,0,0,0

4

2 回答 2

0

MSDN 解释了MF_MT_H264_MAX_MB_PER_SEC属性的值:

数据类型 UINT32[] 存储为 UINT8[]

因此,字节数组是预期的格式。

该属性的值是一个 UINT32 值数组,对应于 UVC 1.5 H.264 视频格式描述符中的以下字段。

你有:

dwMaxMBperSecOneResolutionNoScalability

指定不可扩展的高级视频编码 (AVC) 流允许的最大宏块处理速率,当所有层具有相同的分辨率时,对所有层求和。

16056565

dwMaxMBperSecTwoResolutionsNoScalability

指定不可缩放的 AVC 流允许的最大宏块处理速率,当所有层包含两种不同的分辨率时,对所有层求和。

0

于 2013-01-04T08:38:32.167 回答
0

媒体类型 GUID“2017be05-6629-4248-aaed-7e1a47bc9b9c”表示 FORMAT_UVCH264Video 然后您可以将 pbFormat 结构转换为 KS_H264VIDEOINFO*

于 2019-03-05T10:48:26.550 回答