香橙派2实现USB摄像头转mjpeg
香橙派Zero2
为什么采用香橙派Zero2
Orange Pi Zero2 是一款高性价比的 ARM 开发板,凭借其硬件配置和扩展能力,适用于多种场景。以下是其主要应用领域及适用场景的详细分析:
一、智能家居与物联网(IoT)
- 智能网关
Zero2 支持 Wi-Fi 5 和蓝牙 5.0,可通过 40Pin GPIO 和 24Pin 扩展接口连接传感器(如温湿度、红外感应等),实现家庭环境数据的采集与联动控制。其低功耗和小尺寸(30mm×65mm)便于嵌入智能灯具、安防设备等终端中。 - 家庭自动化中枢
支持运行 Home Assistant 等开源平台,可集成 Zigbee、Z-Wave 等协议模块,统一管理智能设备。
二、教育与创客开发
- 嵌入式学习工具
作为树莓派平替产品,Zero2 提供丰富的教程文档(如 PWM 控制、ROS 安装等),适合新手学习 Linux 系统、Python 编程及硬件交互。其低成本(89 元起)降低了学习门槛。 - 硬件项目原型开发
支持 PWM 输出(可控制舵机、电机转速)、GPIO 扩展,适用于机器人、智能小车等 DIY 项目。例如通过 PWM 实现呼吸灯或电机调速。
三、多媒体与边缘计算
- 轻量级媒体中心
集成 Mali G31 MP2 GPU,支持 4K 视频解码和 HDMI 输出,可搭建电视盒子或智能投屏设备,运行 Android TV 系统。 - 端侧 AI 推理
搭载四核 Cortex-A53 处理器(1.5GHz),可部署轻量级深度学习模型。实测运行 YOLOv5n 目标检测算法耗时约 9 秒,优化后(如 FastestDet)可达 8 FPS,适合交通标志识别等低实时性场景。
四、工业与行业应用
- 工业控制节点
支持宽温工作环境(部分版本),可通过扩展以太网或串口实现 PLC 通信,用于生产线数据采集或设备监控。 - 边缘网关
运行 Docker 或 OpenWrt,可部署在物联网边缘节点,实现数据预处理和协议转换,减少云端负载。
五、其他创新场景
- 机器人视觉:结合 OpenCV 和摄像头模块,实现基础图像处理(如物体追踪)。
- 网络服务器:千兆网口(部分型号)支持搭建轻量级 Web 服务器或 NAS 存储。
总结
Orange Pi Zero2 的核心优势在于 性价比高(最低 89 元)、系统兼容性强(支持 Android、Ubuntu 等 6 种 OS)以及 扩展灵活(40Pin+24Pin 接口)。其性能虽不及高端开发板,但足以满足中小型项目需求,尤其适合预算有限的开发者、教育机构及智能硬件初创团队。
镜像采用官方下载的ubuntu2204 ,Orangepizero2_3.1.0_ubuntu_jammy_server_linux6.1.31.7z
通过串口连接wifi网络
OrangePi ZERO 2 通过串口连接 WiFi 网络的操作步骤如下:
一、硬件准备与串口连接
-
串口模块接线
使用 USB 转 TTL 模块(如 CH340 或 CP2102)连接开发板:- 开发板 TX 接模块 RX
- 开发板 RX 接模块 TX
- 开发板 GND 接模块 GND
- 模块插入电脑后,在设备管理器中确认 COM 端口号(如 COM13)。
-
串口终端设置
使用 MobaXterm 或同类工具创建串口会话:- 选择对应的 COM 端口,波特率设为 115200。


二、通过命令行连接 WiFi
-
扫描可用 WiFi 热点
登录系统后输入命令扫描周围网络:nmcli dev wifi按方向键查看列表,按 Q 退出。
-
连接 WiFi 网络
使用nmcli命令直接连接(需替换wifi_name和wifi_passwd):nmcli dev wifi connect "wifi_name" password "wifi_passwd"示例(连接名为
WIFI_SSID的 WiFi):nmcli dev wifi connect WIFI_SSID password xxxxxxxx成功后会显示连接状态。
-
验证连接
- 查看 IP 地址:
ifconfig(重点关注wlan0接口) - 测试网络连通性:
ping www.baidu.com。
- 查看 IP 地址:
三、注意事项
- 避免修改配置文件
不要通过/etc/network/interfaces配置文件修改 WiFi 连接,可能导致网络异常。 - 串口工具兼容性
部分终端工具(如 minicom)可能无法正常显示图形化界面nmtui,优先使用命令行操作。 - 静态 IP 设置(可选)
若需固定 IP,需先通过route -n获取网关和子网掩码,再使用nmtui配置(需支持图形界面的终端工具)。
四、常见问题
- TF 卡兼容性:建议使用闪迪 Class 10 及以上 TF 卡,其他品牌可能出现启动故障。
- 供电要求:初始测试可用电脑 USB 3.0 供电(5V/2A),外接设备时需独立电源。
通过以上步骤,即使没有网线或显示器,也可通过串口完成 WiFi 配置。若需更详细的图形化操作或系统镜像烧录方法,可参考官方手册。
添加多组WiFi密码与优先级
在OrangePi Zero 2上实现多组WiFi配置自动切换,可通过以下两种主流方案实现。根据是否使用NetworkManager工具,选择最适合你的方式:
一、基于NetworkManager的配置(推荐)
适用场景:需要动态管理多个WiFi网络、设置连接优先级,或需兼容图形化工具(如nmtui)
操作步骤:
-
添加新WiFi配置
使用nmcli命令添加多组WiFi凭证(替换SSID_NAME和PASSWORD):sudo nmcli connection add type wifi con-name "Home_WiFi" ifname wlan0 ssid "Home_SSID" wifi-sec.key-mgmt wpa-psk wifi-sec.psk "Home_Password" sudo nmcli connection add type wifi con-name "Office_WiFi" ifname wlan0 ssid "Office_SSID" wifi-sec.key-mgmt wpa-psk wifi-sec.psk "Office_Password"注:
con-name为连接配置名称,可自定义;ifname需与无线网卡接口名一致(通常为wlan0) -
设置自动连接优先级
为不同网络配置优先级,数值越大优先级越高:sudo nmcli connection modify "Home_WiFi" connection.autoconnect yes connection.autoconnect-priority 10 sudo nmcli connection modify "Office_WiFi" connection.autoconnect yes connection.autoconnect-priority 5设备会优先尝试连接优先级高的可用网络
-
激活配置
sudo nmcli connection reload # 重载配置 sudo systemctl restart NetworkManager # 重启服务
二、基于wpa_supplicant的配置文件(方法备选)
适用场景:无NetworkManager的极简系统,或需直接管理底层网络协议栈
操作步骤:
-
编辑配置文件
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf添加多个
network块(按需调整优先级priority):ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="Home_SSID" psk="Home_Password" priority=5 } network={ ssid="Office_SSID" psk="Office_Password" priority=3 }注:
priority范围1-10000,数值越大优先级越高 -
重启服务生效
sudo systemctl restart wpa_supplicant
三、验证与调试
-
查看当前连接状态:
nmcli connection show --active # NetworkManager方案 iwconfig wlan0 # wpa_supplicant方案 -
强制切换网络测试:
sudo nmcli connection up "Office_WiFi" # NetworkManager方案
四、注意事项
-
接口名称确认
通过ip link确认无线网卡接口名称(可能为wlp2s0等非wlan0) -
配置文件权限
wpa_supplicant.conf需设置权限:
sudo chmod 600 /etc/wpa_supplicant/wpa_supplicant.conf -
服务依赖检查
- NetworkManager需保持运行:
sudo systemctl enable --now NetworkManager - wpa_supplicant需绑定接口:
sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
- NetworkManager需保持运行:
通过上述配置,设备在切换环境时会自动尝试已存储的WiFi网络,按优先级完成无感切换。推荐优先使用NetworkManager方案,因其支持动态优先级调整和可视化管理。
修改和校正时间
终端输入date命令,弹出如下时间。

明显是时区不正确,可以输入更改时区的命令进行修改。
sudo dpkg-reconfigure tzdata
进入了时区设计界面,按方向键选择“Asia”,回车。

按方向键找到“Shanghai”并回车。

设置好后,再次在终端输入date命令,弹出如下时间,时间就对上了。

将USB摄像头视频流给推流到WebServer
在无桌面版Linux系统(如Orange Pi Zero 2)中,完全可以通过成熟的工具实现USB摄像头视频流推送至Web服务器的需求。以下是经过验证的成熟方案及具体实现方法:
方案对比与选型建议
| 方案 | 开发难度 | 延迟 | 适用场景 | 依赖环境 |
|---|---|---|---|---|
| mjpg-streamer | ★☆☆☆☆ | 1-2秒 | 简单监控、多客户端 | 需安装依赖库 |
| Motion | ★★☆☆☆ | 2-5秒 | 带动态检测的长期监控 | 独立服务 |
| FFmpeg+RTMP | ★★★☆☆ | 0.5-1秒 | 专业直播、低延迟场景 | Nginx编译环境 |
| Flask+OpenCV | ★★★★☆ | 1-3秒 | 需深度定制的Web集成 | Python环境 |
| cam2web | ★☆☆☆☆ | 1-2秒 | 快速原型开发 | 需编译 |
本文选择的是mjpg-streamer,开箱即用无需编码,以下是通过源码编译安装mjpg-streamer
在Orange Pi Zero 2上安装mjpg-streamer时出现报错,是因为该软件包未收录在系统默认的软件源中。根据多篇技术文档的实践指导,必须通过源码编译安装。以下是经过验证的完整解决方案:
一、安装依赖环境
# 更新软件源并安装编译工具
sudo apt update
sudo apt install -y cmake libjpeg8-dev git
注:部分系统可能需要替换libjpeg8-dev为libjpeg62-dev(参考网页2报错案例)
二、源码编译安装
# 克隆官方仓库(国内用户推荐gitee镜像)
git clone https://gitee.com/leeboby/mjpg-streamer.git # 或原地址:github.com/jacksonliam/mjpg-streamer
# 进入编译目录
cd mjpg-streamer/mjpg-streamer-experimental
# 编译安装(-j4表示4线程加速编译)
make -j4
sudo make install
关键说明:
- 若编译报错
libjpeg not found,需检查libjpeg-dev是否安装成功 - 芒果派MQ Quad等H616设备实测可通过此流程完成编译(参考网页3)
- 若出现
cmake not found错误,表明系统未安装CMake编译工具,跳转至[安装CMake工具链](# 安装CMake工具链)
三、启动视频流服务
# 设置库路径(重要!避免报错找不到插件)
export LD_LIBRARY_PATH=/usr/local/lib/mjpg-streamer
# 启动服务(需确认摄像头设备节点,通常为/dev/video0或video1)
# 使用USB摄像头的主视频流节点(通常为video1)
mjpg_streamer -i "input_uvc.so -d /dev/video1 -r 1280x720 -f 30" \
-o "output_http.so -p 8080 -w /usr/local/share/mjpg-streamer/www"
参数解释:
-d /dev/video0:摄像头设备路径(通过v4l2-ctl --list-devices确认)-r 1280x720:分辨率设置(支持640x480/1920x1080等)-f 30:帧率限制(过高可能导致卡顿)
四、验证与访问
-
本地测试:
curl http://localhost:8080/?action=stream -
局域网访问:
在浏览器输入http://[开发板IP]:8080,可看到实时视频流界面
五、高级配置参考
| 参数类型 | 常用选项 | 作用说明 |
|---|---|---|
| 输入插件 | -q 80 |
设置JPEG压缩质量(1-100) |
-n |
禁用动态控制(解决部分驱动兼容性问题) | |
| 输出插件 | -c user:password |
启用HTTP基本认证 |
-l on |
控制摄像头LED指示灯 |
画质与性能平衡建议:
- 高画质:
-q 80~95(适合静态场景,带宽占用高) - 低延迟:
-q 40~70(适合动态场景,带宽占用低)
六、开机自启动配置
参考网页的systemd服务配置
# 创建服务文件
sudo nano /etc/systemd/system/mjpg-streamer.service
# 写入内容
[Unit]
Description=MJPEG Streamer
After=network.target
[Service]
ExecStart=/usr/local/bin/mjpg_streamer -i "input_uvc.so -d /dev/video1 -r 1280x720 -f 30 -q 85" \
-o "output_http.so -p 8080 -w /usr/local/share/mjpg-streamer/www"
Restart=on-failure
User=orangepi
[Install]
WantedBy=multi-user.target
# 启用服务
sudo systemctl enable --now mjpg-streamer
故障排查优先级:
- 确认设备节点是否被其他进程占用(
lsof /dev/video1) - 尝试更换USB接口(排除供电不足问题)
- 查看内核日志:
dmesg | grep uvc
常见问题排查
- 摄像头未识别:
- 执行
v4l2-ctl --list-devices确认设备节点 - 检查USB摄像头供电(推荐使用带外接供电的USB HUB)
- 执行
- 端口冲突:
- 修改启动命令中的
-p 8080为其他端口(如8081)
- 修改启动命令中的
- 花屏/卡顿:
- 降低分辨率参数
-r 640x480 - 添加
-q 80降低JPEG压缩质量
- 降低分辨率参数
- 确认摄像头设备节点
- 运行以下命令,列出所有视频设备:
ls /dev/video*- 如果输出为空或只有 /dev/video0,说明摄像头可能映射到了 /dev/video0。修改命令中的 -d /dev/video1 为 -d /dev/video0
- 解决权限问题
- 将当前用户加入 video 用户组:
sudo usermod -aG video $USER- 重启系统或重新登录使权限生效
安装CMake工具链
我在Orange Pi Zero 2上编译mjpg-streamer时出现cmake not found错误,表明系统未安装CMake编译工具。以下是详细的解决方案:
一、安装CMake工具链
方法1:通过apt快速安装(推荐)
-
添加universe软件源
部分系统默认源未包含CMake,需开启扩展仓库:sudo add-apt-repository universe # 启用universe仓库 sudo apt update -
安装CMake及编译依赖
执行以下命令安装完整工具链:sudo apt install -y cmake build-essential libjpeg-dev # 核心依赖build-essential:包含gcc/g++编译器、make等工具libjpeg-dev:mjpg-streamer依赖的JPEG库头文件
方法2:源码编译安装(apt不可用时)
-
下载CMake源码包
访问CMake官网或通过wget下载:wget https://cmake.org/files/v3.28/cmake-3.28.3.tar.gz # 示例版本 -
编译与安装
tar -zxvf cmake-3.28.3.tar.gz cd cmake-3.28.3 ./bootstrap && make -j4 && sudo make install # 多线程加速编译
二、验证CMake安装
执行以下命令检查版本:
cmake --version # 预期输出类似"cmake version 3.28.3"
三、重新编译mjpg-streamer
-
清理之前的编译缓存
cd ~/mjpg-streamer/mjpg-streamer-experimental rm -rf _build # 删除旧的构建目录 -
重新编译项目
make clean && make -j4 # 启用4线程加速-
若仍报错,尝试指定CMake路径:
mkdir _build && cd _build cmake -DCMAKE_BUILD_TYPE=Release .. # 手动调用CMake make -j4
-
四、依赖问题排查
若编译过程中出现其他错误,需检查以下依赖:
-
USB摄像头驱动
sudo apt install v4l-utils # 验证设备节点:v4l2-ctl --list-devices -
缺失的开发库
sudo apt install libopencv-dev # 若涉及OpenCV功能
五、扩展说明
- 交叉编译场景:若在x86主机上为Orange Pi交叉编译,需使用aarch64工具链(参考网页6/7/8的交叉编译配置)
- 系统兼容性:Orange Pi官方镜像可能预装旧版CMake,建议通过
apt upgrade升级至新版
通过上述步骤,可解决CMake缺失导致的编译中断问题。若网络环境受限,推荐优先使用apt安装;若需特定版本,则选择源码编译方案。

浙公网安备 33010602011771号