【问题标题】:Why is MFCreateMediaSession not supported for Metro apps?为什么 Metro 应用程序不支持 MFCreateMediaSession?
【发布时间】:2012-04-19 01:01:45
【问题描述】:

我正在学习 Media Foundation,并希望通过 Metro 应用程序使用它。不幸的是,Metro 应用程序不支持 MFCreateMediaSession。这是为什么? Metro 应用程序如何创建媒体会话来播放应用程序动态生成的 PCM 音频流?

【问题讨论】:

  • 欢迎使用 Windows 8,您曾经喜爱的许多 API 经常无缘无故地丢失了

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


【解决方案1】:

显然,Metro 应用程序不以这种方式创建自己的媒体会话是设计使然。以下由 Microsoft 的 James Dailey 在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 );

问。 Media Foundation Media Engine:通过研究real-time communication sample,似乎播放/录制的方法如下——到目前为止我做对了吗?

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 2020-02-23
    • 2014-10-30
    • 1970-01-01
    • 2020-05-11
    相关资源
    最近更新 更多