我们先来定义一下需求,最基本的视频监控啥也不干,只是希望能在想看的时候看到视频。
前提是,外网能够访问,否则的话,这个业务基本意义不大(只能用来看豪宅)
那么基于这个需求,我们有如下几种方案:
1、成熟的远程监控软件,如向日葵,其提供一整套服务,需要注册或者付费;
2、国外类似向日葵的产品,但是由于其服务器在国外无法稳定。
3、类似IPCAMERA这样的安卓APP;
方案3,这类的APP,如果是商业化的,通常它也需要注册或者付费,这样它才可以提供外网支持。
如果扩展一下,仅使用免费的功能,外网支持自己去实现。
还有如下几种方案:
1、通过向日葵的花生壳实现域名向家庭网络外网IP的映射,然后再将外网IP向安卓手机的IP进行映射。但这个事情基本前提是你家有独立的外网IP,实际上宽带商一般不提供独立的外网IP,他们用的NAT,所以根本就访问不到你家来。
2、建设一个家庭的VPN网络,手机直接连进VPN,再访问安卓手机提供的摄像头监控页面链接。
3、让安卓手机上的摄像头APP向远程的推流视频服务器比如RTMP进行推流,但需要自建RTMP服务器。
抛开成本不谈,这个方案有一个大问题,RTMP目前在手机端的页面上不能支持!(网上有个所谓的vedio.js,只有电脑端使用,有人说百度魔改的版本可以,实际上并不能)
如果实现一个苹果的HLS推流(M3U8模式),它的问题是延迟比较严重。而且实现起来相对麻烦一点。
(Windows下实现ffmpeg+nginx+rtmp+hls实现直播推流拉流(低延时)_u011925282的专栏-CSDN博客_ffmpeg hls推流
https://blog.csdn.net/u011925282/article/details/102580420)
当然,有自己的服务器,也可以直接建一个基于webrtc的聊天室。有一个php的workman项目,它有一个这样的demo,就是弄两个进程,监听两个端口,一个发,一个收。
不过很严重的是,现在chrome已经不支持http的webrtc了。你必须用HTTPS,可是https的端口是443,你得修改那个项目,实现外部443向内部其他端口的映射或说反向代理,如果你的服务器上已经有https的项目了,apache怎么解决两个项目的冲突,我现在还没搞清楚。
要是弄的是nginx,就会好一点。
而且这个项目的本质是推jepg文件,所以想想也不会太快。
至于flash,人家也不玩了。
如果不考虑手机端直接走web使用的话,实现了rtmp推流服务器之后,在手机端安装一个可以播放rtmp推流的播放器,这样基本上可以解决需求。
至于怎么鉴权。可能要在推流地址上下功夫吧。
用DOCKER建一个rtmp推流服务器还是挺容易的。