一、Ubuntu上查看USB相机连接的是哪个口,如何查看???
在 Ubuntu 系统中,你可以通过以下几种常用的终端命令来查看 USB 相机连接的接口和设备节点(如 /dev/video0):
- 使用
v4l2-ctl(推荐)
这是最直观的方法,可以直接显示设备名称、物理接口(Bus 信息)以及对应的视频节点。
- 安装:
sudo apt update && sudo apt install v4l-utils - 查询: 运行
v4l2-ctl --list-devices - 输出示例:
USB Camera (usb-0000:00:14.0-1):表示连接在 USB 总线的特定路径上。
/dev/video0表示该相机在系统中的挂载点。
- 使用
lsusb查看硬件详情
如果你想确认相机是否被系统识别及其硬件 ID(VID/PID),可以使用此命令。
- 基本查询:
lsusb - 树状视图:
lsusb -t(可以查看设备连接在哪个物理 Hub 和端口上,以及使用的协议速度)。
- 查看
/dev目录
如果你只需要知道设备挂载成了哪个编号,可以直接列出视频设备:
- 命令:
ls /dev/video* - 技巧: 拔掉相机运行一次,插上相机再运行一次,新增的
/dev/videoX即为当前相机。
- 使用
dmesg查看系统内核日志
当你插入 USB 相机时,系统内核会记录连接信息。
- 命令:
dmesg | tail -n 20 - 该命令会显示最近连接的硬件信息,包括 USB 端口号和分配的
/dev/videoX节点。
总结建议
- 查端口路径: 用
v4l2-ctl --list-devices。 - 查硬件参数: 用
lsusb。 - 查实时连接状态: 用
dmesg。
二、系统中显示有/dev/video0和/dev/video1,该使用哪一个????
在 Ubuntu 中,如果同一个 USB 相机出现了 /dev/video0 和 /dev/video1,通常情况下你应该使用 /dev/video0。
这是因为现代 Linux 内核(通过 UVC 驱动)通常会为同一个物理摄像头创建两个设备节点:
/dev/video0(Video Capture): 这是真正的视频流接口。你的摄像头画面(如 MJPG、YUYV 格式)通过这个节点传输,这是 OpenCV、FFmpeg 或 Cheese 等软件需要调用的节点。/dev/video1(Metadata Capture): 这是元数据接口。它不包含图像画面,而是用来传输相机的额外信息(如传感器的元数据、亮度统计等),供某些特定算法使用。
如何 100% 确认?
你可以通过以下命令查看每个节点的具体功能:
bash
v4l2-ctl -d /dev/video0 --info
v4l2-ctl -d /dev/video1 --info
请谨慎使用此类代码。
- 在输出的
Device Caps部分,如果看到Video Capture,那它就是你要找的画面节点。 - 如果只看到
Metadata Capture,则该节点无法输出画面。
快速验证小技巧
如果你不确定哪个有画面,可以直接尝试列出它们支持的分辨率:
- 有效节点:
v4l2-ctl -d /dev/video0 --list-formats-ext会显示 640x480 等分辨率信息。 - 元数据节点: 运行同样的命令通常会报错或显示"不包含视频捕捉功能"。
结论: 绝大多数场景下,直接选择 序号较小 的那个(即 video0)即可