You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 16:05:36