1

我想在 Windows 7 上将固定大小的原始像素帧编码为 MPEG。我正在尝试使用媒体基础转换来做到这一点。但媒体基金会不支持直接将原始帧转换为 MPEG。相反,我必须使用媒体接收器将原始像素缓冲区转换为 WMV3 格式,然后使用转码拓扑将 WMV 转换为 MPEG。

媒体基金会是否支持直接将帧缓冲区转换为 MEPG?

此外,在执行此操作时,我遇到了转码框架无法将单帧 WMV 视频转换为 MEPG 的麻烦。不知道为什么,但在输入单帧 WMV 时会导致创建空的 MPEG 文件。这是媒体基金会的已知限制吗?

此致

燃气轮机

PS我不打算为直接显示实现过滤图来做到这一点。根据媒体基金会的文件,它应该提供直接展览提供的所有设施。

4

1 回答 1

2

Media Foundation 为您提供处理压缩的H.264 视频编码器MFT/DMO。

与 DirectShow(您不想使用,但它为您提供使用第三方编码器压缩成 MPEG-4 和 MPEG-4 AVC 的类似选项)不同,使用 Media Foundation,您可以自己使用转换,无需将其插入功能齐全的图形(拓扑)中。Microsoft 仅为您提供 H.264 编码器,仅从 Windows 7 开始(对您有好处)。

在 MSDN 文章中描述了 MFT 的使用,并逐步遵循它,您将获得压缩的 H.264 (MPEG-4 AVC) NAL 单元,但它们并不完全是“文件”。MPEG-4 文件是按照 MPEG-4 Part 14 规范格式化的数据,Microsoft 为您提供了MPEG-4 File Sink。后者基本上假设您使用的是拓扑而不是单个组件。

因此,您的选择是 (a) 实现要插入拓扑的自定义视频源节点,并构建编码拓扑以通过 H.264 编码器将数据路由到 MPEG-4 文件接收器,或者 (b) 实例化独立的视频编码器和文件接收器分开,并在拓扑之外使用它们设置它们并在它们之间传递数据。或者,另一个选项 (c) 是使用 Media Foundation Sink Writer API,它与提到的后者大致相同,重点是易用性而不是灵活性和对细节的控制。

根据媒体基金会的文件,它应该提供直接展览提供的所有设施。

不,它不应该也不应该。Microsoft 仅通过 Windows 7+ 中的 Media Foundation 提供 MPEG-4 视频编码器和多路复用器,并且根本不使它们可用于 DirectShow(除非通过 MF 组件的包装器),但是 MF 在许多方面不如 DS:支持在较旧的操作系统中,功能集、可扩展性和开销 - 仅举几例。

于 2013-04-08T21:12:45.240 回答