【问题标题】:UWP MediaCapture initialization failsUWP MediaCapture 初始化失败
【发布时间】: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


【解决方案1】:

我发现如果我在 UI 线程上运行初始化,它工作得很好:

await Application.Current.Dispatcher.InvokeAsync(async () => {
    await mediaCapture.InitializeAsync();
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 2012-11-17
    • 2017-12-10
    • 2018-09-17
    • 1970-01-01
    • 2018-10-13
    • 2014-03-13
    相关资源
    最近更新 更多