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

如何让Rust程序获取摄像头访问权限?(Ubuntu 22.10环境)

解决Uvc库打开摄像头时的Access权限错误

问题重现

使用Rust的uvc库尝试打开摄像头时触发权限错误,代码如下:

use uvc::{Context, Frame};

fn main() {
    let ctx = Context::new().expect("Could not create context");
    let dev = ctx
        .find_device(None, None, None)
        .expect("Could not find device");

    let devh = dev.open().expect("Could not open device");
}

报错信息:

thread 'main' panicked at 'Could not open device: Access'

环境:Ubuntu 22.10,希望避免使用sudo运行程序。

解决方案

问题根源是普通用户缺少摄像头设备的访问权限——Ubuntu系统中摄像头设备默认归video用户组管理,只需将当前用户加入该组即可:

  • 检查当前用户是否已在video组:

    groups
    

    输出中如果没有video,则执行下一步操作。

  • 将用户加入video组:

    sudo usermod -aG video $USER
    
  • 使权限生效:
    要么重新登录系统(最稳妥),要么执行以下命令临时切换组(仅当前终端会话有效):

    newgrp video
    
  • 验证权限:
    查看摄像头设备的权限信息(以/dev/video0为例,若有多个摄像头可替换序号):

    ls -l /dev/video0
    

    输出中应包含crw-rw----+ 1 root video ...,说明video组已拥有读写权限。

完成以上步骤后,直接运行cargo run即可正常打开摄像头。

内容的提问来源于stack exchange,提问作者altywalty

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:05:14