使用FFmpeg拉取大华摄像头的视频流并录像本地存储

自渡
2024-10-03 / 0 评论 / 57 阅读 / 正在检测是否收录...

现在一般摄像头都需要配合本地硬盘录像机才能存储录像,或者花钱购买云存储。算下来也是一笔不小的开支。但现在大部分摄像头都会打开rtsp端口,如果你有一台Linux服务器,那么就可以使用ffmpeg来录像,充当硬盘录像机。
下面是本站编写的sh脚本,用于使用FFMpeg拉取大华IPC摄像头视频流并保存到本地:
本脚本将视频存储为mkv格式,为什么不使用mp4呢?因为mkv可以边录像边看,而mp4文件在ffmpeg未完成录像任务时,是不可查看的。
需要注意的是,大华录像机拉流的链接为:rtsp://用户名:密码@IP地址/cam/realmonitor?channel=1&subtype=0,其中subtype参数中,0表示使用主码流,1表示使用辅码流。可以根据实际情况做调整。
m28qojh4.png

#!/bin/sh
while true
do
TIME=$(date +'%Y-%m-%d_%H-%M-%S')
#配置保存的路径
WORK_DIR=/media/yourdir
DIR=$(date +'%Y-%m-%d')
#摄像头的用户名,默认是admin
CAM_USER=admin 
#摄像头的密码
CAM_PWD=
#摄像头的IP地址
CAM_IP=x.x.x.x
#分片分段录像,这里设为30分钟
RECORD_LENGTH=00:30:00
RECONNECT_CMD="-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 1800"
#这里使用MKV格式保存,方便边录像边看
VIDEO_TYPE=matroska
if [ -d "$WORK_DIR/$DIR" ]
then
ffmpeg -loglevel quiet  -rtsp_transport tcp -i "rtsp://${CAM_USER}:${CAM_PWD}@${CAM_IP}/cam/realmonitor?channel=1&subtype=0" ${RECONNECT_CMD} -c copy -t ${RECORD_LENGTH} -f $VIDEO_TYPE $WORK_DIR/$DIR/$TIME.mkv 
else
mkdir -p $WORK_DIR/$DIR
ffmpeg -loglevel quiet  -rtsp_transport tcp -i "rtsp://${CAM_USER}:${CAM_PWD}@${CAM_IP}/cam/realmonitor?channel=1&subtype=0" ${RECONNECT_CMD} -c copy -t ${RECORD_LENGTH} -f $VIDEO_TYPE $WORK_DIR/$DIR/$TIME.mkv
fi
done
0

评论 (0)

取消