繁体   English   中英

由于Windows Media Foundation中的解析,SetOutputType失败

[英]SetOutputType failed because of resolution in Windows Media Foundation

我正在使用H.264编码器MFT在程序中进行视频编码。 一切正常,直到我找到H.264编码器无法成功设置输出类型的文件。

我用来设置编码器的代码在这里

ciEncoder.CreateObject(pCLSIDs[0], IID_IMFTransform);
// H.264 Encoder MFT needs to set output first 
LComObject<IMFMediaType> ciOutputType;  // Output media type of the encoder
hr = fpMFCreateMediaType((IMFMediaType**)(ciOutputType.GetAssignablePtrRef()));
hr = ciOutputType->SetGUID(MF_MT_MAJOR_TYPE, MFMediaType_Video);
hr = ciOutputType->SetGUID(MF_MT_SUBTYPE, MFVideoFormat_H264);
hr = ciOutputType->SetUINT32(MF_MT_AVG_BITRATE, 768 * 1000);
hr = ciOutputType->SetUINT32(MF_MT_INTERLACE_MODE, 2);
hr = ciOutputType->SetUINT32(MF_MT_MPEG2_PROFILE, eAVEncH264VProfile_Base);
hr = MFSetAttributeRatio(ciOutputType.get(), MF_MT_FRAME_RATE, 10, 1);
hr = MFSetAttributeSize(ciOutputType.get(), MF_MT_FRAME_SIZE, vf.iWidth, vf.iHeight);
hr = MFSetAttributeRatio(ciOutputType.get(), MF_MT_PIXEL_ASPECT_RATIO, 1, 1);
hr = ciEncoder->SetOutputType(0, ciOutputType.get(), 0);

输入视频(swf视频)分辨率为76x12,使用上面的代码SetOutputType返回MF_E_INVALIDMEDIATYPE。

如果我保持宽度76但将高度更改为70,则SetOutputType可以成功。 我也尝试了其他值,例如24、38,但都失败了。

有人可以帮忙检查一下吗?

谢谢

我真的不知道答案。 但是也许答案可以在编码器处理宏块的方式中找到。 它们可以是4 * 4或8 * 8,依此类推。 因此,可能需要最小高度的编码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM