【发布时间】:2020-03-10 05:48:38
【问题描述】:
我正在开发一个 WPF 应用程序,我在其中使用 Windows.Media.Capture.MediaCapture 类录制音频数据。如果我使用或不使用参数进行初始化,它就可以工作:
var mediaCapture = new MediaCapture();
await mediaCapture.InitializeAsync();
或者我可以添加要使用的麦克风(如果有多个):
var allAudioDevices = await DeviceInformation.FindAllAsync(DeviceClass.AudioCapture);
DeviceInformation microphone = allAudioDevices.FirstOrDefault();
MediaCaptureInitializationSettings mediaInitSettings = new MediaCaptureInitializationSettings {
AudioDeviceId = microphone.Id,
StreamingCaptureMode = StreamingCaptureMode.Audio
};
await _mediaCapture.InitializeAsync(mediaInitSettings);
当我将我的应用程序作为 UWP 应用程序(使用桌面桥)运行时,问题就出现了。作为一个 UWP 应用程序,当它调用 InitializeAsync() 方法时,它总是抛出异常并显示以下(详细:))错误消息:Element not found. 麦克风的 DeviceInformation 对象被正确找到,所以在初始化期间发生了一些事情MediaCapture.
麦克风功能在桥接项目的清单文件中设置。
我做错了什么?我也愿意使用其他方法来录制声音。
【问题讨论】:
-
我尝试了您的代码,但我们无法重现您的问题,您能否分享minimal reproducible example 可以重现此问题。
-
与此同时,我发现如果我在 UI 线程上运行初始化,则会出现一个窗口弹出窗口,询问用户访问麦克风的权限。如果我授予访问权限,其余的工作正常。
-
太好了,请在下方发布您的解决方案,并mark 接受稍后访问此主题的方便人员。
标签: c# wpf uwp voice-recording