title: 如何将猫猫监控放在博客上 date: 2020-07-30 13:36:22 tags:
- docker
- nginx
- rtmp
- ffmpeg categories:
- 喵喵
将监控猫猫的监控放到博客上并且定时关闭摄像头
需求很简单,作为一个拥有猫猫的程序员来说,观察自己的猫猫每天在干什么很重要, 于是乎,装了监控,为了分享给朋友们一起云撸猫,特意将摄像头的视频流推送到博客上
第一步 选方案
因为家里的摄像头是rtsp协议的,想在网页上观看只能选择转码推流,那么大致方案就敲定下来了
因为家里的nas上还有其他程序再跑,最终选中docker容器作为载体
1.Ffmpeg 2.nginx 3.docker
第二步 搭建Docker
环境:centos7
1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。 通过 uname -r 命令查看你当前的内核版本
$ uname -r
2、使用 root 权限登录 Centos。确保 yum 包更新到最新。
$ sudo yum update
3、可以查看所有仓库中所有docker版本,并选择特定版本安装
$ yum list docker-ce --showduplicates | sort -r
4、安装docker
$ sudo yum install docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0
$ sudo yum install <FQPN> # 例如:sudo yum install docker-ce-17.12.0.ce
5、启动并加入开机启动
$ sudo systemctl start docker
$ sudo systemctl enable docker
6、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
$ docker version
第三步 使用Docker搭建安装nginx+rtmp
1.安装nginx
这里使用docker仓库里tiangolo/nginx-rtmp的,直接拉下来运行即可
# 拉取镜像
docker pull tiangolo/nginx-rtmp
# 根据镜像运行容器
docker run -d -p 1935:1935 --name nginx-rtmp tiangolo/nginx-rtmp
2.安装ffmpeg
这里使用docker仓库里tiangolo/nginx-rtmp的,直接拉下来运行即可
# 拉取镜像
docker pull jrottenberg/ffmpeg
# 根据镜像运行容器
docker run -it --name app_ffmpeg -p 8080:8080 -v /home/app_ffmpeg/:/mnt/app/ --entrypoint=‘bash’ jrottenberg/ffmpeg
# 把文件导入到docker容器目录中
docker cp /usr/video/a.mp4 app_ffmpeg:/tmp/workdir
# 查看容器,启动容器,进入容器
docker ps -a
docker start app_ffmpeg
docker attach app_ffmpeg
# 然后就可以推流啦(这里就可以使用局域网IP进行推流)
ffmpeg -re -stream_loop -1 -i a.mp4 -vcodec copy -acodec copy -f flv rtmp://172.17.0.16:1935/live/cs
两个容器使用的ip不一样,可以使用
docker inspect -f='{{.Name}} {{.NetworkSettings.IPAddress}} {{.HostConfig.PortBindings}}' $(docker ps -aq)
查询每一个容器所对应的端口,名称和ip
对了,最后还需要一个内网穿透才可以,我用的是nps,这个都可以
定时关闭摄像头,家里的潘多拉 定时任务给摄像头mac限制一下联网时间即可
第四步 优化
目前可优化的部分就是博客上的rtmp流必须是用falsh才能播放
可以优化为hls协议
还有就是摄像头ip定时关闭的事情,因为只要断网 ffmpeg 肯定罢工,因为定时任务唤醒才可以
以上就是我目前的 “ 将监控猫猫的监控放到博客上并且定时关闭摄像头 ”