利用树莓派玩出延时摄影

由 夏日冰菓 发布

打造一个低成本高可用于的延时拍摄设备

延时摄影1

早期有做过树莓派和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) 获取当前时间参数


暂无评论

发表评论