gpt4 book ai didi

winapi - 获取 waveIn 设备的全名

转载 作者:行者123 更新时间:2023-12-04 00:29:44 24 4
gpt4 key购买 nike

我一直在使用waveInGetDevCaps获取 waveIn 设备的名称,但 WAVEINCAPS结构只支持 31 个字符加上一个 null,这意味着在我的计算机上,我得到的设备名称被截断:

Microphone / Line In (SigmaTel 
Microphone Array (SigmaTel High,

我确信必须有一种获取完整设备名称的方法,但有人知道那是什么吗?

最佳答案

基于@Andrea Bertucelli 答案的改进/完整 C# WPF 代码

using NAudio.CoreAudioApi;
using NAudio.Wave;
using System;
using System.Collections.Generic;
using System.Windows;

namespace WpfApp2
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();

foreach (KeyValuePair<string, MMDevice> device in GetInputAudioDevices())
{
Console.WriteLine("Name: {0}, State: {1}", device.Key, device.Value.State);
}
}

public Dictionary<string, MMDevice> GetInputAudioDevices()
{
Dictionary<string, MMDevice> retVal = new Dictionary<string, MMDevice>();
MMDeviceEnumerator enumerator = new MMDeviceEnumerator();
int waveInDevices = WaveIn.DeviceCount;
for (int waveInDevice = 0; waveInDevice < waveInDevices; waveInDevice++)
{
WaveInCapabilities deviceInfo = WaveIn.GetCapabilities(waveInDevice);
foreach (MMDevice device in enumerator.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.All))
{
if (device.FriendlyName.StartsWith(deviceInfo.ProductName))
{
retVal.Add(device.FriendlyName, device);
break;
}
}
}

return retVal;
}
}
}

关于winapi - 获取 waveIn 设备的全名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1449162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com