Audio 媒体基础IMFediaSureC::创建演示文稿描述符调用永不结束 我想利用MediaFoundation来播放MP3文件,在使用 CurrestPrimation描述符< /Cult>方法< /P>时,我遇到了一个问题:演示文稿删除器< /代码>

Audio 媒体基础IMFediaSureC::创建演示文稿描述符调用永不结束 我想利用MediaFoundation来播放MP3文件,在使用 CurrestPrimation描述符< /Cult>方法< /P>时,我遇到了一个问题:演示文稿删除器< /代码>,audio,com,directx,ms-media-foundation,Audio,Com,Directx,Ms Media Foundation,我在做什么: 使用MFStartup 使用MFCreateMediaSession创建会话 使用MFCreateSourceResolver 使用SourceResolver中的CreateObjectFromURL创建MediaSource 使用MFCreateTopology 尝试使用MediaSource中的CreatePresentationDescriptor创建PresentationDescriptor 当我调用CreatePresentationDescriptor时,没有发

我在做什么:

  • 使用
    MFStartup
  • 使用MFCreateMediaSession创建会话
  • 使用
    MFCreateSourceResolver
  • 使用SourceResolver中的
    CreateObjectFromURL
    创建MediaSource
  • 使用
    MFCreateTopology
  • 尝试使用MediaSource中的
    CreatePresentationDescriptor
    创建PresentationDescriptor

当我调用
CreatePresentationDescriptor
时,没有发生错误/异常,它只是站在那里,什么也不做。当我暂停VisualStrudio时,它表示程序仍在等待方法完成。我做错了什么?

我没有意识到我用C#来做这件事(我认为这与此无关)


问题是,在C#中导入com接口时,需要导入所有接口方法,而不仅仅是那些被调用的方法。有些方法可以调用未导入的方法,并导致未向Visual Strudio调试器报告的访问冲突,因此方法似乎从未完成invokink。

如果您使用Microsoft的示例代码播放MP3,可能会有所帮助。我用他们的样品来播放我游戏的背景音乐。(将MediaEnginePlayer.h/.cpp文件复制并粘贴到我的项目中)