1 项目思考

【】手中有一台闲置树莓派和对应的官方摄像头,因为这段时间在尝试养宠物,所以想试试看能否通过外网链接内网摄像头远程简单,但是购买摄像头不太安全,另一方面网络推荐方案大多是raspivid + b站直播,所以经过思考以后,发现可以通过frp接受数据,ffmpeg保存数据,因此在这里写一下具体操作流程,记录一下。

2 操作步骤

# 开启raspivid树莓派录制
sudo raspivid \
-o - \ # 这里可以指定具体目录, 【-】表示标准输出,连结管道
-t 0 \
-w 640 -h 360 -fps 25\
|cvlc -vvv stream:///dev/stdin \
--sout '#standard{access=http,mux=ts,dst=:8090}' \
:demux=h264

# frp 配置文件对应设置
	[web]
	type = http
	local_ip = 127.0.0.1
	local_port = 8090
	custom_domains = ‘外网IP或域名地址’
	vhost_http_port = 8090
	#密码保护web
	http_user = ‘账户名’
	http_pwd = '密码'
	#令牌保护(非必选项)
	token = “密钥”
	
# ffmpeg 流媒体切片方式
ffmpeg \
-i "http://IP地址:端口号" \ # 这里设置对应地址
-map 0 \ # 这里是映射轨道
-c copy \ # 直接复制代码不转码
-f hls \ # 使用hls 切片
-hls_time 600 \  # hls切片时长间隔为十分钟
chongwu%d.ts #格式化输出文件名
	#补充说明:本来打算用segment进行切片的,
	#但是segment_time函数设置以后导出的文件只有第一个正确,
	#剩下的都会直接时间码错误,无法播放,可能是切片时间码设置问题,
	#有大佬的话可以指点一下,hls的问题在于只能输出ts,不能直接设置成mp4

总结

【】一次小小的不完美的尝试,但是总算是有一个自己喜欢的结果,希望大家能学有所成,加油。


2021.0326 更新
尝试使用 群晖 的 监控功能 意外的是可行,但是会连接不稳定,同时上面需要把 http切换为 srtp模式,这样可以从监控摄像头的自定义中连接。


2021.0413 更新

# 开启raspivid树莓派录制 + SRTP

sudo raspivid \
-o - \ # 这里可以指定具体目录, 【-】表示标准输出,连结管道
-t 0 \
-w 640 -h 360 -fps 25\
|cvlc -vvv stream:///dev/stdin \
--sout '#rtp{sdp=rtsp://:8554/}' \
:demux=h264

# SurveillanceStation 对应设置
名称 自定义
品牌 【用户自定义】
类型 串流RTSP
路径 rtsp://:########@192.168.50.159:8554/ # 这里特别麻烦,一定要这么设置才能读取到文件,内网一般没有账户密码,所以格式不能错,不然就很尴尬了。