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/ # 这里特别麻烦,一定要这么设置才能读取到文件,内网一般没有账户密码,所以格式不能错,不然就很尴尬了。