我目前的主要目标是获取有关本地机器的所有音频端点设备的详细信息。那是代表音频外围设备的对象。我希望能够根据某些逻辑(或最终允许用户手动操作)选择要从哪个设备进行录制。
这是我到目前为止所得到的。我对 c++ 很陌生,所以处理所有这些抽象类变得有点棘手,所以也可以随意评论代码质量。
//Create vector of IMMDevices
UINT endpointCount = NULL;
(*pCollection).GetCount(&endpointCount);
std::vector<IMMDevice**> IMMDevicePP; //IMMDevice seems to contain all endpoint devices, so why have a collection here?
for (UINT i = 0; i < (endpointCount); i++)
{
IMMDevice* pp = NULL;
(*pCollection).Item(i, &pp);
IMMDevicePP.assign(1, &pp);
}
我目前更多的技术目标是获取实现此接口的对象:http: //msdn.microsoft.com/en-us/library/windows/desktop/dd371414 (v=vs.85).aspx
这是一种类型应该代表单个音频端点设备,而IMMDevice
似乎包含设备集合。但是IMMEndpoint
只包含一个名为的方法GetDataFlow
,所以我不确定这是否对我有帮助。同样,目标是轻松选择要从哪个端点设备录制和流式传输音频。
有什么建议么?我是否使用了错误的 API?这个 API 对音频的实际流式传输和采样肯定有很好的命令,但我对如何确保我正在使用所需的设备有点迷茫。