创客出手

目录

用程序保存监控摄像头rtsp的图片和视频

ffmpeg_rtsp

当我们安装监控摄像头时,我们可以选择使用厂家提供的录像机作为监控的工具,但如果动一点编程,我们也可以通过rtsp通过我们的计算机直接连接摄像头,把影像或者图片保存到我们的计算机上。如果你还会一点人工智能的编程技能,那通过摄像头的影响来监控你感兴趣的目标对象,那会更加好玩,但我们这篇文章先不讨论人工智能,我们先确保影响能被计算机保存下来。

RTSP简介

Real Time Streaming Protocol,RTSP,中文叫实时流协议,是一种网络应用协议,专为娱乐和通信系统的使用,以控制流媒体服务器。该协议用于创建和控制终端之间的媒体会话。媒体服务器的客户端发布VCR命令,例如播放,录制和暂停,以便于实时控制从服务器到客户端(视频点播)或从客户端到服务器(语音录音)的媒体流。

监控摄像头的RTSP

现在大部分的网络监控摄像头都支持RTSP的推流,你可以通过查看说明书,或者登录到摄像头的后台管理界面,找到摄像头的推流RTSP URL,用户密码并启用它。当然,如果你启用了摄像头推流,记得修改一个密码,以免黑客通过扫描默认端口,获得了你的摄像头的控制权。

常见大厂的摄像头RTSP地址

海康威视

说明 RTSP URL 类型 备注
第1个通道的主码流 rtsp://{user}:{pwd}@{host}:{port}/Streaming/Channels/101 摄像头 新款
第1个通道的子码流 rtsp://{user}:{pwd}@{host}:{port}/Streaming/Channels/102 摄像头 新款
多播取流 rtsp://{user}:{pwd}@{host}:{port}/Streaming/Channels/101?transportmode=multicast 摄像头/录像机
第1个通道的主码流 rtsp://{user}:{pwd@{host}:{port}/{videotype}/ch1/main/av_stream 摄像头 旧型号摄像头(2012年之前的设备)
第1个通道的子码流 rtsp://{user}:{pwd@{host}:{port}/videotype}/ch1/sub/av_stream 摄像头 旧型号摄像头(2012年之前的设备)

说明
user: 用户名。例如: admin。
pwd: 密码。例如: 888888(默认)。
ip: 为设备IP。例如 10.7.8.122。
port: 端口号默认为554,若为默认可不填写。
channel: 通道号,新款格式是N01,N02,N代表通道,例如901;旧款的chN,N代表通道,例如:ch2
subtype: 码流类型,主码流为101(新款)或 main,子码流为102,或者sub

大华

说明 RTSP URL 类型
第1个通道的主码流 rtsp://{user}:{pwd}@{ip}:{port}/cam/realmonitor?channel=1&subtype=0 摄像头
第1个通道的辅码流 rtsp://{user}:{pwd}@{ip}:{port}/cam/realmonitor?channel=1&subtype=1 摄像头

说明
user: 用户名。例如: admin。
pwd: 密码。例如: 888888(默认)。
ip: 为设备IP。例如 10.7.8.122。
port: 端口号默认为554,若为默认可不填写。
channel: 通道号,起始为1。例如通道2,则为channel=2。
subtype: 码流类型,主码流为0(即subtype=0),辅码流为1(即subtype=1)。

使用Python程序来保存图片或视频片段

准备

先安装ffmpeg工具

sudo apt install ffmpeg

保存图片

下面程序可以保存一张图片,文件名为img001.jpg,如果需要保存多张图片,可以把cap_count改成大于1。

import os

user = '<<<user>>>'
pwd = '<<<pwd>>>'
host = '<<<host>>>'
port = 554
img_files = 'img%03d.jpg'
cap_count = 1

url = "rtsp://{user}:{pwd}@{host}:{port}/Streaming/Channels/101".format(user=user, pwd=pwd, host=host, port=port)

cmd = "ffmpeg -rtsp_transport tcp -y -i \"{url}\" -vframes {cap_count} {img_files}".format(url=url, cap_count=cap_count, img_files=img_files)
os.system(cmd)

保存视频

下面程序可以保存一段10秒视频,文件名为video.mp4,如果需要修改视频时长,可以把duration改成其他数字。

import os

user = '<<<user>>>'
pwd = '<<<pwd>>>'
host = '<<<host>>>'
port = 554
duration = 10
video_files = 'video.mp4'

url = "rtsp://{user}:{pwd}@{host}:{port}/Streaming/Channels/101".format(user=user, pwd=pwd, host=host, port=port)

cmd = "ffmpeg -rtsp_transport tcp -y -t {duration} -i \"{url}\" -acodec copy -vcodec copy -hide_banner -loglevel error -an {video_files}".format(url=url, duration=duration, video_files=video_files)
os.system(cmd)
更多关于 的文章
关注创客出手公众号

关注创客出手