媒体基础将原始像素帧转换为mpeg视频

问题描述 投票:1回答:1

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

媒体基础是否有支持直接将帧缓冲区转换为MEPG的方法?

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

最诚挚的问候

GT

P.S。我不打算实现直接显示的过滤器图形来做到这一点。根据媒体基金会的文件记录,它应提供直接节目提供的所有设施。

video encoding ms-media-foundation mpeg-4
1个回答
2
投票

Media Foundation为您提供H.264 Video Encoder MFT / DMO,它可以处理压缩。

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

MFT的使用已在MSDN文章中进行了描述,并逐步进行操作,您将获得压缩的H.264(MPEG-4 AVC)NAL单元,但是它们并非完全是“文件”。 MPEG-4文件是按照MPEG-4第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:支持在较旧的操作系统中,功能集,可扩展性和开销-仅举几例。

© www.soinside.com 2019 - 2024. All rights reserved.