如何枚举 Windows 8 上的媒体基础转换

Posted

技术标签:

【中文标题】如何枚举 Windows 8 上的媒体基础转换【英文标题】:How to enumerate Media Foundation Transforms on Windows 8 【发布时间】:2012-12-21 11:49:30 【问题描述】:

在我的 Windows 应用商店应用程序中,我想对音频文件进行重新采样。 看来,对于这个问题有什么好的解决方案是使用来自 Media Foundation Transforms 的 Resampler 对象。为了得到这个对象,我应该用函数 MFTEnumEx 枚举媒体转换,如下所述: Enumerating MFTs。 但是在认证时我收到这样的错误: 此应用程序类型不支持 mfplat.dll 中的 API MFTEnumEx。

有没有其他方法可以在 Windows 8 上使用转换,或其他方法来重新采样音频文件?

谢谢!

【问题讨论】:

【参考方案1】:

请注意,除了开箱即用的本机转换之外,Windows 商店应用转换(例如编解码器)是针对您的应用程序的沙盒。

如果您使用传统编解码器包设置自定义 MFT,您的 Windows 商店应用将无法使用它。您必须将 MFT 与您的应用程序打包并使其可通过 WinRT 激活(并实现 IMediaExtension)。请记住,MediaExtensions 是 COM/WinRT 混合。

您在此处有一个受支持格式的列表,我想您最好的选择是在您的应用程序中对其进行硬编码: http://msdn.microsoft.com/en-us/library/windows/apps/hh986969.aspx

【讨论】:

用应用程序打包 MFT 的例子怎么样?是否可以将标准转码器添加到包中?在msdn.microsoft.com/en-us/library/windows/apps/hh986969.aspx 表中,我看到了带有 PCM 的 WAV 格式。但是我应该如何使用它呢? 您必须实现其他接口才能使您的 MFT 与 Windows 商店应用程序一起使用。那里有样品:code.msdn.microsoft.com/windowsapps/… 开箱即用的 Sink 仅限于以下配置文件:M4a、Mp3、Mp4、Wma、Wmv。但是你可以编写一个支持 Wav 的自定义接收器

以上是关于如何枚举 Windows 8 上的媒体基础转换的主要内容,如果未能解决你的问题,请参考以下文章

Windows MFT(媒体基础转换)解码器未返回正确的采样时间或持续时间

媒体基础 - 如何在 MFT(媒体基础转换)中更改帧大小

枚举特定物理设备名称的逻辑驱动器

工具 | Axure基础操作 No.3

如何在 Windows 8 现代应用程序上从视频流中抓取帧?

TensorFlow简单使用(基础篇)