我正在开发WPF应用程序,在其中使用Windows.Media.Capture.MediaCapture
类记录音频数据。无论是否有参数初始化都可以正常工作
var mediaCapture = new MediaCapture();
await mediaCapture.InitializeAsync();
或者我可以添加要使用的microfone(如果有多个):
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
的初始化过程中会发生一些事情。
麦克风功能在桥接项目的清单文件中设置。
我在做什么错?我也愿意使用其他方法来录制声音。
答案 0 :(得分:0)
我发现,如果我在UI线程上运行初始化,则效果很好:
Application.Current.Dispatcher.Invoke(() => {
await mediaCapture.InitializeAsync();
});