这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【树莓派Zero2W】—自动视频录制

共1条 1/1 1 跳转至

【树莓派Zero2W】—自动视频录制

工程师
2026-02-12 17:02:48     打赏

一、功能描述

       实现一个开机就启动录制的功能,录制时间和视频分辨率由配置文件决定。录制完的视频转换成常见的MP4格式,方便其他终端设备查看。

二、程序流程图

       程序流程图如下

image.png

三、代码解析

(1)、安装软件

       本项目需要使用rpicam-apps和ffmpeg软件,rpicam-apps软件用来驱动摄像头和获取摄像头的数据流;ffmpeg软件用来将摄像头的数据流由H.264转换成MP4格式。

       软件安装指令

sudo apt update && sudo apt upgrade -y
sudo apt install -y rpicam-apps ffmpeg

       采用的强制安装rpicam-apps和ffmpeg软件,如果已安装其中一个软件,怕安装时间过长,可以选择安装剩余的,没有对软件版本做任何要求。

(2)、创建视频录制服务

       创建.service文件,名称设置为camera-record,对应指令如下

sudo nano /etc/systemd/system/camera-record.service

       .service文件内容如下

[Unit]
Description=Raspberry Pi Camera Auto Record Service
After=multi-user.target  # 系统加载完成后启动
Wants=local-fs.target    # 确保本地存储可用
 
[Service]
Type=simple
User=pi                  # 你的实际用户(非默认pi)
WorkingDirectory=/home/pi
ExecStart=/home/pi/camera_record.sh  # 默认录制10分钟(自定义时长改:camera_record.sh 15)
Restart=no               # 录制完成后不重启(循环录制改always)
StandardOutput=journal+console  # 日志输出到系统日志
 
[Install]
WantedBy=multi-user.target

       其中pi为用户名,需要根据自己设置树莓派系统的用户名进行配置,#后面的为注释,在实际编写中要去掉,我就是直接复制过去就发现服务会启动失败。复制后可以Ctrl+O→回车→Ctrl+X保存并退出。

       与该服务相关的指令如下

sudo systemctl enable camera-record.service       # 启用开机自启
sudo systemctl start camera-record.service          # 立即启动服务(无需重启测试)
sudo systemctl status camera-record.service       # 查看服务状态(确认无报错)
sudo systemctl stop camera-record.service        # 停止当前录制服务
sudo systemctl disable camera-record.service     # 禁用开机自启

       这些指令可以协助开发者进行开发。

(3)、设置服务为开机自启动

sudo systemctl daemon-reload        #让系统识别新创建的服务文件
sudo systemctl enable camera-record.service    # 启用开机自启

(4)、脚本文件

       在/home/pi文件夹下创建.sh脚本,名称为camera_record,对应指令如下

nano /home/pi/camera_record.sh

       文件内容如下

#!/bin/bash
# 树莓派Zero 2W摄像头自动录制脚本(rpicam版)
# 修复:禁用预览窗口 + 修正命令格式 + ffmpeg封装MP4
 
# 1. 配置基础参数
DEFAULT_DURATION=10  # 默认录制时长(分钟)
DURATION_MINUTES=${1:-$DEFAULT_DURATION}
DURATION_MS=$((DURATION_MINUTES * 60 * 1000))
 
# 2. 生成带时间戳的文件名(适配pi用户目录)
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
VIDEO_H264="/home/pi/camera_temp_${TIMESTAMP}.h264"
VIDEO_MP4="/home/pi/camera_recording_${TIMESTAMP}.mp4"
 
# 3. 打印录制信息
echo "====================================="
echo "开始摄像头录制 | 时长:${DURATION_MINUTES} 分钟"
echo "最终文件:${VIDEO_MP4}"
echo "====================================="
 
# 4. 核心:rpicam录制(关键修复:禁用预览窗口 + 低性能适配)
rpicam-vid \
--width 640 --height 480 \
--framerate 15 \
-t ${DURATION_MS} \
-o ${VIDEO_H264} \
-n
--focus 0.5
 
# 5. 转换为MP4(用ffmpeg替代MP4Box,无重新编码,速度快)
if [ -f "${VIDEO_H264}" ]; then
    echo "录制完成,正在封装为MP4..."
    # ffmpeg封装h264到MP4(-c:v copy 表示直接复制视频流,不重新编码)
    ffmpeg -r 15 -i ${VIDEO_H264} -c:v copy -f mp4 ${VIDEO_MP4} -y
   
    # 清理临时文件 + 验证结果
    if [ -f "${VIDEO_MP4}" ]; then
        rm -f ${VIDEO_H264}
        echo "✅ 录制完成!文件路径:${VIDEO_MP4}"
    else
        echo "❌ MP4封装失败!"
        exit 1
    fi
else
    echo "❌ 录制失败,未生成h264文件!"
    exit 1
fi
 
exit 0

(5)、修改脚本文件权限

       生成脚本文件后一定要修改文件权限,否则运行会失败,对应的指令如下

chmod +x /home/pi/camera_record.sh

四、测试和验证

(1)、脚本测试

       在完成以上配置后可以使用脚本测试录制和转码功能,使用方式如下

/home/pi/camera_record.sh 录制时长(单位:分钟)

       如录制时长为1分钟的指令为

/home/pi/camera_record.sh 1

       日志会打印出正在录制提示,录制完成也会有相对于的提示,完整的提示如下

image.png

       录制完成后会在脚本文件夹下生成MP4文件

image.png

       名称为camera_recording_开始录制时间。

(2)、服务测试

       可以启动开机录制服务,对应指令为

sudo systemctl start camera-record.service

       在录制过程中可以通过如下指令查看服务进度

sudo systemctl status camera-record.service

       当正在录制中,进度提示信息为

image.png

       主要看Active选项是否为active,如果是说明服务成功启动。按Ctrl+C键可以退出进度查看。当录制完成后查看进度就会变成如下

这时Active选项就变为inactive,说明服务结束。在脚本文件夹下可以看到录制好的MP4文件。

(3)、开机测试

       重启或断电开启板卡,开启后就会自动录制视频,录制完成后会在对应的文件夹下生成MP4文件。

五、应用场景和开发心得

       树莓派Zero 2W板卡非常小巧,接口丰富,价格也不贵,加上一个摄像头可以做一个简易的监控器、目标识别等设备。可以将本项目运用到行车记录仪或家庭监控设备,项目占用的资源也并不多,可以在此基础上进行扩展。但目前还存在如下问题:不能通过按钮触发录制开始、暂停和结束;自动录制时长设置比较麻烦;录制完成后文件导入电脑比较麻烦;没有磁盘剩余空间检测和文件覆盖;自动对焦功能。但是若固定录制时长和中间不暂停就可以不用修改。本次实验用的摄像头感光芯片是OV5647,是不能自动对焦的,可以选用感光芯片为imx219/imx477/imx708支持自动对焦的,这样画面不会晃动。

       借助树莓派Zero 2W的强大的处理芯片BCM2710A1、完善的开发资料和软件以及丰富的问题答疑,使得树莓派的开发并不是那么的困难。也是算在Linux开发领域中比较容易上手的板卡。我也是第一次使用Linux板卡进行开发,在开发过程中遇到很多的问题,这些问题在网上也是能找到解决办法的,所以才能顺利完成项目开发。树莓派Zero 2W不像树莓派5那样非常强大,甚至连网页都打开不了,内存也是只有512MB。但是学习Linux开发和进行简单功能开发,树莓派Zero 2W也是性价比比较高的。




关键词: 树莓派Zero2W     自动视频录制    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]