WinUI3 C#中CaptureElement不可用,求替代摄像头视频流控件
WinUI3摄像头视频流替代方案
在WinUI3中,CaptureElement控件已不再被支持,你需要使用MediaPlayerElement控件搭配MediaCapture类来实现摄像头视频流功能。
核心实现步骤
- 初始化
MediaCapture实例,完成摄像头设备的配置与初始化 - 创建
MediaPlayer实例,将MediaCapture的捕获流关联到该实例 - 将
MediaPlayer绑定到MediaPlayerElement控件,启动预览
代码示例
C# 后台逻辑
private MediaCapture _mediaCapture; private MediaPlayer _mediaPlayer; private async Task SetupCameraPreviewAsync() { // 初始化MediaCapture _mediaCapture = new MediaCapture(); await _mediaCapture.InitializeAsync(new MediaCaptureInitializationSettings { StreamingCaptureMode = StreamingCaptureMode.Video }); // 关联捕获流到MediaPlayer _mediaPlayer = new MediaPlayer(); _mediaPlayer.Source = MediaSource.CreateFromMediaCapture(_mediaCapture); // 绑定到XAML中的MediaPlayerElement CameraPreviewElement.MediaPlayer = _mediaPlayer; // 启动预览 await _mediaCapture.StartPreviewAsync(); } // 页面卸载时清理资源 private async void Page_Unloaded(object sender, RoutedEventArgs e) { if (_mediaCapture != null) { await _mediaCapture.StopPreviewAsync(); _mediaCapture.Dispose(); _mediaCapture = null; } _mediaPlayer?.Dispose(); }
XAML 布局
<MediaPlayerElement x:Name="CameraPreviewElement" Width="640" Height="480" AutoPlay="True" />
权限配置
需要在Package.appxmanifest中添加摄像头权限声明:
<Capabilities> <DeviceCapability Name="webcam" /> </Capabilities>
内容的提问来源于stack exchange,提问作者At Work
相关产品推荐
相关产品推荐

