如何解决使用Media Foundation API禁用特定的解码器
我有一个嵌入了Windows Media Player的项目。使用Media Foundation API
,如何禁用mp4和mkv文件格式?因此,Windows Media Player将使用第三方解码器来生成mp4和mkv文件格式。 (在我的情况下是FFDSHOW
,我想将其H264
解码器用于mp4和mkv文件格式,而不是Media Foundation
解码器。)
我听说有一个名为Codec Tweak Tool
的第三方软件可以完成这项工作,很可能是使用Media Foundation API
来实现的。
使用Codec Tweak Tool
和Win注册表调试器,我发现了一些可能与Media Foundation
相关的注册表目录。
我尝试在以下Win注册表目录中更改注册表:HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows Media Foundation\ByteStreamHandlers\.mkv
(Windows 10 64位目录),但是系统未授予我权限,使用注册表似乎是一种更改方法但是,顺便说一句,我的访问被拒绝了。我认为这不是正确的方法。我听说可以通过使用Media Foundation API
,也可以使用Media Foundation Transforms
或Source Resolver
来达到相同的目的,但是我不知道如何设置适当的对象并使用API接口做这样的事情。但是我知道禁用它之后,我应该设置首选的directShow解码器,例如FFDSHOW
,这样对于那些我想禁用的文件格式,它将代替Media Foundation
使用。
使用Codec Tweak Tool
更改H264
首选解码器后,我发现在设置首选directShow解码器后哪些注册表已更改。
密钥目录:
HKLM\SOFTWARE\WOW6432Node\Microsoft\DirectShow\Preferred
(Windows 10 64位目录)
已被修改的注册表:
{31435641-0000-0010-8000-00AA00389B71}
{34363248-0000-0010-8000-00AA00389B71}
{34363268-0000-0010-8000-00AA00389B71}
并将以下FFDSHOW
CLSID
应用于它们中的每一个:{04FE9017-F873-410E-871E-AB91661A4EF7}
我还注意到CLSID
是设置首选解码器所必需的。
我得出的结论是,使用注册表绝对不是实现此目标的正确方法,那么如何使用Media Foundation API
来做到这一点?我已经读过Media Foundation API documentation,但是由于它的级别低且复杂,对我来说似乎很困惑。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。