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



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

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

也在这样做的同时,我遇到了转码框架无法将单帧WMV视频转换为MEPG的麻烦。不知道为什么,但是当单帧WMV被馈送时,它会导致创建空的MPEG文件。这是媒体基础的已知限制吗?

问好

GT

注:我不打算实现过滤器图形直接显示做到这一点。根据媒体基金会的文件,它应该提供direct show提供的所有设施。

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

不像DirectShow(你不想使用,但它为你提供了一个类似的选项,压缩成MPEG-4和MPEG-4 AVC使用第三方编码器),与Media Foundation你可以使用自己的转换,而不需要插入到全功能的图(拓扑)。微软只提供H.264编码器,从Windows 7开始(对你有好处)。

MFT的使用在MSDN文章中有描述,并按照它一步一步地进行,您将得到压缩的H.264 (MPEG-4 AVC) NAL单元,但它们并不完全是"文件"。MPEG-4文件是根据MPEG-4 Part 14规范格式化的数据,微软为此提供了MPEG-4文件接收器。后者基本上假定您使用的是一个拓扑,而不是单个组件。

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

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

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

最新更新