打造一个低成本高可用于的延时拍摄设备
早期有做过树莓派和USB摄像头定时拍摄天空的项目,后来发现闲置的USB摄像头不防水,而且像素比较低,最后的视频效果不太理想。还可以采用海康威视高清摄像头生成RTSP流,再用FFMEPG每几秒钟获取一张截图存为JPG格式,并且根据序列号命名,方便后期处理成视频格式。这种延时拍摄优点是低成本,硬件坏了更换便宜(USB摄像头能有多贵),可以7*24小时不间断拍摄,也可以用于记录植物生长过程,楼盘建造过程。后期添加气象信息,绘制在视频里面,行成全天气象视频预览。
(方式一)通过FFMEPG定时拍摄相片
sudo apt-get install ffmpeg
每隔1秒截取一张图片并覆盖在同一张图片上
ffmpeg -i "rtsp://admin:123456@192.168.8.148:554/cam/realmonitor?channel=1&subtype=0" -y -f image2 -r 1/1 -updatefirst 1 img.jpg
每隔1秒截取一张图片并都按一定的规则命名来生成图片
ffmpeg -i "rtsp://admin:123456@192.168.8.148:554/cam/realmonitor?channel=1&subtype=0" -y -f image2 -r 1/1 img%03d.jpg
每隔1秒截取一张指定分辨率的图片并覆盖在同一张图片上
ffmpeg -i "rtsp://admin:123456@192.168.8.148:554/cam/realmonitor?channel=1&subtype=0" -y -f image2 -r 1/1 -updatefirst 1 -s 640x480 img.jpg
这里顺便列一下目前用到的摄像头的RTSP地址格式,这里要注意大华的rtsp地址因为带有&符号,在shell直接执行的时候如果没有将rtsp地址用""包起来 则需要用\转义
海康主流
rtsp://admin:123456@192.168.1.160:554/h264/ch1/main/av_stream
海康子流
rtsp://admin:123456@192.168.1.160:554/h264/ch1/sub/av_stream
大华主流
rtsp://admin:pheicloud408@192.168.8.148:554/cam/realmonitor?channel=1&subtype=0
大华子流
rtsp://admin:pheicloud408@192.168.8.148:554/cam/realmonitor?channel=1&subtype=1
(方式二)USB摄像头通过fswebcam程序来拍摄相片
安装程序
apt-get install fswebcam
检测USB设备
lsusb
执行拍照任务
fswebcam -d /dev/video0 --no-banner -S 10 -r 800x600 1.jpg
命令解释:
--no-banner
不添加水印
-S 10
每10秒钟拍一张相片
-r 800x600
拍摄分辨率(建议采用USB摄像头最佳分辨率或者最大分辨率)
自动拍照脚本
新建 image.sh
脚本命令输入以下内容
#!/bin/bash
# Timelapse controller for USB webcam
DIR=/mnt/usb/1/1
x=1
while [ $x -le 1440 ]; do
filename=$(printf "%05d" ${a}).jpg
fswebcam --no-banner -S 14 -r 800x600 $DIR/$filename
let a=a+1
x=$(( $x + 1 ))
sleep 6;
done;
脚本解释:
filename中是命名,其中printf "%05d" ${a})的意思是5个0,再给a命值,
底部let a=a+1是给a,+1,表示00000后接下来就是+1叠加
DIR
保存的文件夹
定时任务
配合定时任务实现无人看管
编辑 crontab
文件
vim /etc/crontab
每天早上6点开始任务
\* 6 * * * root nohup /ext/image.sh >/dev/null 2>&1 &
每天晚上7点结束任务
\* 19 * * * root pgrep image.sh | xargs kill -s 9
视频整理
配合视频处理脚本,可以之间在文件夹中查看当天生成的延时摄影
如每天晚上7点5分开始整合视频,,并且删除JPG图片。(需要安装解码工具,查看Motion简单监控底部安装)
5 19 * * * root cd /mnt/disk1/download/image/ && avconv -r 23 -i %05d.jpg -r 24 -vcodec libx264 -crf 20 -g 15 Timelapse$(date +%Y-%m-%d).mp4 && rm *.jpg
*如果没有安装解码工具需要执行改命令安装,再运行视频处理脚本
apt-get install libav-tools -y
avconv -r 10 -i %05d.jpg -r 10 -vcodec libx264 -crf 20 -g 15 Timelapse$(date +%Y-%m-%d).mp4
脚本解释:
-r 10
每秒钟需要10张图(第一个 r )
-r 10
每秒钟帧数(第二个 r )
Timelapse$(date +%Y-%m-%d)
获取当前时间参数