一、安装测试
1) 首先将 USB 摄像头插入到 Orange Pi 开发板的 USB 接口中
2) 然后通过 lsmod 命令可以看到内核自动加载了下面的模
orangepi@orangepizero2:~$ lsmod |grep uvcvideo
uvcvideo 102400 0
3) 通过 v4l2-ctl 命令可以看到 USB 摄像头的设备节点信息为/dev/video1
0rangepi@orangepi:~$ sudo apt update
orangepi@orangepi:~$ sudo apt install -y v4l-utils
orangepi@orangepizero2:~$ v4l2-ctl --list-devices
cedrus (platform:cedrus):
/dev/video0
/dev/media0
HD Camera: HD Camera (usb-5200000.usb-1):
/dev/video1
/dev/video2
/dev/media1
4) 使用 fswebcam 测试 USB 摄像头
a. 安装 fswebca
orangepi@orangepi:~$ sudo apt update
orangepi@orangepi:~$ sudo apt-get install -y fswebcam
b. 安装完 fswebcam 后可以使用下面的命令来拍照
a) -d 选项用于指定 USB 摄像头的设备节点
b) --no-banner 用于去除照片的水印
c) -r 选项用于指定照片的分辨率
d) -S 选项用设置于跳过前面的帧数
e) ./image.jpg 用于设置生成的照片的名字和路径
orangepi@orangepi:~$ sudo fswebcam -d /dev/video0 \ --no-banner -r 1280x720 -S 5 ./image.jpg
6) 使用 mjpg-streamer 测试 USB 摄像头
a. 下载 mjpg-streamer
a) Github 的下载地址:
orangepi@orangepi:~$ git clone https://github.com/jacksonliam/mjpg-streamer
b) Gitee 的镜像下载地址为:
orangepi@orangepi:~$ git clone https://gitee.com/leeboby/mjpg-streamer
b. 安装依赖的软件包
a) Ubuntu 系统
orangepi@orangepi:~$ sudo apt-get install -y cmake libjpeg8-dev
b) Debian 系统
orangepi@orangepi:~$ sudo apt-get install -y cmake libjpeg62-turbo-dev
c. 编译安装 mjpg-streamer
orangepi@orangepi:~$ cd mjpg-streamer/mjpg-streamer-experimental orangepi@orangepi:~/mjpg-streamer/mjpg-streamer-experimental$ make -j4 orangepi@orangepi:~/mjpg-streamer/mjpg-streamer-experimental$ sudo make install
7) 打开摄像头
运行star.sh
orangepi@orangepizero2:~/mjpg-streamer/mjpg-streamer-experimental$ ./start.sh
MJPG Streamer Version: git rev: 85f89a8c321e799fabb1693c5d133f3fb48ee748
i: Using V4L2 device.: /dev/video1
i: Desired Resolution: 640 x 480
i: Frames Per Second.: 30
i: Format............: UYVY
i: JPEG Quality......: 80
i: TV-Norm...........: DEFAULT
i: Could not obtain the requested pixelformat: UYVY , driver gave us: MJPG
... will try to handle this by checking against supported formats.
... Falling back to the faster MJPG mode (consider changing cmd line options).
UVCIOC_CTRL_ADD - Error at Pan (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Tilt (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Pan Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Pan/tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Focus (absolute): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Pan (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Tilt (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Pan Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Pan/tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Focus (absolute): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at LED1 Mode: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at LED1 Frequency: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Disable video processing: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Raw bits per pixel: Inappropriate ioctl for device (25)
o: www-folder-path......: ./www/
o: HTTP TCP port........: 8080
o: HTTP Listen Address..: (null)
o: username:password....: disabled
o: commands.............: enabled
二、开机自启动
1 进入 /etc/xdg/autostart/ 以.desktop结尾的
rangepi@orangepizero2:~$ cd /etc/xdg/autostart/
orangepi@orangepizero2:/etc/xdg/autostart$ ls -la
total 108
drwxr-xr-x 2 root root 4096 Jul 14 14:01 .
drwxr-xr-x 8 root root 4096 Jul 13 2022 ..
-rw-r--r-- 1 root root 193 Mar 25 2022 at-spi-dbus-bus.desktop
-rw-r--r-- 1 root root 2218 Feb 10 2022 blueman.desktop
-rw-r--r-- 1 root root 226 Jan 21 2022 im-launch.desktop
-rw-r--r-- 1 root root 86 Jul 14 14:01 mjpg.desktop
-rw-r--r-- 1 root root 350 Mar 7 2022 nm-applet.desktop
-rw-r--r-- 1 root root 315 May 19 2022 orca-autostart.desktop
-rw-r--r-- 1 root root 249 Jan 15 2019 pasystray.desktop
-rw-r--r-- 1 root root 363 Mar 9 2022 polkit-gnome-authentication-agent-1.desktop
-rw-r--r-- 1 root root 369 Feb 21 2022 print-applet.desktop
-rw-r--r-- 1 root root 5330 Feb 24 2022 pulseaudio.desktop
-rw-r--r-- 1 root root 228 May 11 2022 snap-userd-autostart.desktop
-rw-r--r-- 1 root root 191 Feb 24 2022 spice-vdagent.desktop
-rw-r--r-- 1 root root 239 Mar 30 2022 ubuntu-advantage-notification.desktop
-rw-r--r-- 1 root root 9433 Mar 30 2022 update-notifier.desktop
-rw-r--r-- 1 root root 303 Mar 25 2022 user-dirs-update-gtk.desktop
-rw-r--r-- 1 root root 223 Jan 27 2022 xapp-sn-watcher.desktop
-rw-r--r-- 1 root root 250 Mar 25 2022 xdg-user-dirs.desktop
-rw-r--r-- 1 root root 167 Feb 16 2022 xfce4-notifyd.desktop
-rw-r--r-- 1 root root 4586 Apr 10 2022 xfsettingsd.desktop
-rw-r--r-- 1 root root 5981 Feb 16 2021 xscreensaver.desktop
2 根据im-launch.desktop,修改mjpg.desktop
orangepi@orangepizero2:/etc/xdg/autostart$ cat im-launch.desktop
[Desktop Entry]
Name=im-launch
Exec=sh -c 'if [ "x$XDG_SESSION_TYPE" = "xwayland" ] ; then exec env IM_CONFIG_CHECK_ENV=1 im-launch true; fi'
TryExec=im-launch
Type=Application
NoDisplay=true
orangepi@orangepizero2:/etc/xdg/autostart$ cat mjpg.desktop
[Desktop Entry]
Name=mjpg
Exec=/home/orangepi/mjpg.sh
Type=Application
NoDisplay=true
[Desktop Entry]: 这是Desktop Entry文件的头部,指示这是一个桌面条目文件。
Name=mjpg: 这里的Name字段指定了条目的名称,这里是mjpg。
Exec=/home/orangepi/mjpg.sh: Exec字段指定了要执行的命令或脚本。在这里,当桌面环境启动时,它会执行
/home/orangepi/mjpg.sh
脚本。Type=Application: Type字段指定了桌面条目的类型,这里是一个应用程序。
NoDisplay=true: NoDisplay字段指定此条目是否显示在桌面或菜单中。设置为true时,这个条目不会显示出来,通常用于后台或系统级别的应用程序或服务,避免用户手动启动或操作。
总结起来,这个Desktop Entry文件的作用是在桌面环境启动时,自动执行
/home/orangepi/mjpg.sh
脚本,但不会在用户界面中显示出来。
重启就可以看到运行的。