【问题标题】:Resolution Issue when creating an MPEG4 video from images (Windows Media Foundation)从图像创建 MPEG4 视频时的解决问题 (Windows Media Foundation)
【发布时间】:2015-03-09 15:31:26
【问题描述】:

目前我正在使用 Media Foundation SDK 将图像转换为 H.264 视频,使用 Microsoft 的以下示例。

https://msdn.microsoft.com/en-us/library/windows/desktop/ff819477(v=vs.85).aspx

我在调整用于输入的媒体类型对象的 MF_MT_FRAME_SIZE 时遇到了一个问题,似乎如果分辨率更高则监视器连接到对 IMFSinkWriter 对象的 SetInputMediaType 的调用返回 HRESULT 错误代码0xc00d36b4 这意味着无效的 MediaType,这让我想知道您创建的任何 MediaType 是否受分辨率限制?我的代码与示例的不同之处在于顶部定义的以下常量。

const UINT32 VIDEO_WIDTH = 2048;
const UINT32 VIDEO_HEIGHT = 1088;
const GUID   VIDEO_ENCODING_FORMAT = MFVideoFormat_H264;

【问题讨论】:

  • 0xc00d36b4 是 MF_E_INVALIDMEDIATYPE。但我不了解 MF,所以无法进一步帮助您。
  • 感谢您识别 HRESULT 代码。
  • 我的猜测是它超过了支持的最大分辨率 1920×1088 分辨率(2048 > 1920)。 MSDN 让我们猜测,因为 Microsoft 保留在可能安装的多个编码器中自行选择“正确”编码器的权利。因此,限制可能会有所不同,即使您可能对收件箱系统编码器感兴趣。

标签: c++ ms-media-foundation


【解决方案1】:

我很确定 Windows H.264 编码器的最大分辨率取决于您的 Windows 版本。尝试编码为 1920 x 1080。

H.264 编码器的最大分辨率可能与屏幕分辨率无关。

【讨论】:

  • 在查看了 Media Foundation 的更多文档后,我看到仅在 H.264 视频解码器下列出了它在 Windows 7 上的最大分辨率限制为 1920 × 1088。所以我认为这可能是编码器的情况也是如此。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-06
  • 1970-01-01
  • 1970-01-01
  • 2017-09-16
相关资源
最近更新 更多