2012-04-19 68 views
2

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

+2

欢迎来到Windows 8,您曾经爱过的许多API都缺失,通常没有很好的理由 – 2012-04-19 23:08:36

回答

2

显然,Metro应用程序并不是用这种方式创建自己的媒体会话。由詹姆斯·戴利提供以下答案,微软,对an MSDN Forum thread(由我额外的标记)提供了一些启示:

这里有两个选项:

1)使用WASAPI和泵的合成PCM音频直接向 音频管理器(优选的)

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

任一种方法如预期将工作的自定义源。您需要仔细检查每种方法并将其与您的软件 要求进行比较。对于大多数合成音频方案,建议使用WASAPI

他后来澄清:

问:WASAPI:我失去了我的理解一个关键部分 - 如何做需要的对象的初始活化/实例访问音频设备。 Metro风格应用程序不支持IMMDevice时,我怎样才能处理音频设备?

A.代码如下:

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,似乎对比赛的方针/记录将是以下 - 有我得到了它的权利等等远?

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

相关问题