如何解决MFTEnumEx在Windows 7上找不到MFAudioFormat_MP3解码器?
作为来自IMFTransform SetInputType()/SetOutputType() fails
的分支问题当我尝试在Windows 7上枚举MP3解码器时,找不到任何MP3解码器吗?但是,当为MFCreateSourceReaderFromURL创建的MP3文件的IMFSourceReader设置部分媒体类型时,它似乎找到了一个。
我尝试过:
Parallel.For(0,urls.Count,index => fetchBlcock.Post(urls[index])
});
我相信我已经尝试了MFTEnumEx的所有不同标志,但解码器计数仍然为零?
解决方法
Windows 7 SP1解码器:
MP3解码器MFT
- MFT_TRANSFORM_CLSID_Attribute:{BBEEA841-0A63-4F52-A7AB-A9B3A84ED38A}(类型VT_CLSID)
- MF_TRANSFORM_FLAGS_Attribute:MFT_ENUM_FLAG_SYNCMFT
- MFT_INPUT_TYPES_Attributes:MFAudioFormat_MP3
- MFT_OUTPUT_TYPES_Attributes: MFAudioFormat_PCM
解码器不会公布对MFAudioFormat_Float
的支持以进行解码(即使实例化也很难支持)。枚举解码器将输出限制为MFAudioFormat_Float
时,将排除解码器。较新版本的OS可能已更新了解码器,并提供了更多输出格式选项。
如果您这样做的话:
MFT_REGISTER_TYPE_INFO outType { MFMediaType_Audio,MFAudioFormat_PCM };
或nullptr
输出媒体类型,将枚举解码器。
通常来说,Source Reader API也使用相同的MFTEnum
逻辑,以使实际的源媒体类型适合所请求的媒体类型。
枚举时也要注意标志:选择完全同步的MFT对您而言并不那么重要,但是您的API调用建议您请求跳过异步。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。