为什么Metro应用程序不支持MFCreateMediaSession?

时间:2012-04-19 01:01:45

标签: microsoft-metro windows-runtime ms-media-foundation

我正在学习Media Foundation,并希望从Metro应用程序中使用它。遗憾的是,Metro应用不支持MFCreateMediaSession。这是为什么? Metro应用程序如何创建媒体会话,比如播放应用程序即时生成的PCM音频流?

1 个答案:

答案 0 :(得分:2)

显然,按照设计,Metro应用程序不会以这种方式创建自己的媒体会话。微软的James Dailey在an MSDN Forum thread(由我提供的额外标记)提供的以下答案提供了一些见解:

  

以下是两个选项:

     

1)使用WASAPI并将合成的PCM音频直接输入到   音频管理员(首选)

     

2)创建可以插入Media Foundation Media Engine

的自定义来源      

任何一种方法都可以按预期工作。你需要仔细   检查每种方法并将它们与您的软件进行比较   要求。对于大多数合成音频场景,使用WASAPI   推荐。

他后来澄清道:

  

Q值。 WASAPI:我在理解中缺少一个关键部分 - 如何对访问音频设备所需的对象进行初始激活/实例化。如果Metro风格应用程序不支持IMMDevice,我怎么能获得音频设备的句柄?

     

一个。代码如下:

Platform::String^ id = Windows::Media::Devices::MediaDevice::GetDefaultAudioCaptureId(Windows::Media::Devices::AudioDeviceRole::Console);
Microsoft::WRL::ComPtr<IAudioClient> pAudioClient = NULL;  
ActivateAudioInterface( id->Data(), __uuidof( IAudioClient ), (void**)&pAudioClient );
  

Q值。 Media Foundation Media Engine:从研究real-time communication sample开始,似乎播放/录制的方法如下:我到目前为止做得对吗?

           

一个。是的,这似乎是一种合理的方法。