如何从ICSee摄像头采集数据?求网页多摄像头监控面板开发方案
解决ICSee摄像头浏览器监控面板的方案
1. 重新优化抓包流程(修正Charles无效问题)
- 确保手机与电脑处于同一局域网,且手机已完全信任Charles根证书:iOS需在「设置-通用-关于本机-证书信任设置」手动开启信任;Android需在安全设置中安装证书并勾选信任。
- 开启Charles的SSL代理,在
Proxy > SSL Proxying Settings中添加摄像头相关域名,或直接勾选Enable SSL Proxying,同时在Sequence面板右上角搜索ICSee APP的包名过滤请求。 - 操作APP的实时预览功能,重点追踪
ws:///wss://开头的WebSocket连接,以及rtsp:///rtmp://格式的流媒体地址——ICSee大概率通过这类协议传输视频流。
2. 利用摄像头默认支持的RTSP协议
- 多数ICSee兼容的摄像头(如安佳、天视通方案)默认开启RTSP,地址格式通常为:
用户名密码为APP内设置的设备账号,端口默认554,rtsp://[用户名]:[密码]@[摄像头IP]:554/stream1stream1为主码流,stream2为子码流。 - 浏览器无法直接播放RTSP,需用
ffmpeg转码为HTTP-FLV或HLS:
再用ffmpeg -i rtsp://admin:123456@192.168.1.100:554/stream1 -c:v copy -c:a copy -f flv http://localhost:8080/stream1.flvflv.js在浏览器中播放:<video id="video"></video> <script src="flv.min.js"></script> <script> if (flvjs.isSupported()) { const videoElement = document.getElementById('video'); const flvPlayer = flvjs.createPlayer({ type: 'flv', url: 'http://localhost:8080/stream1.flv' }); flvPlayer.attachMediaElement(videoElement); flvPlayer.load(); flvPlayer.play(); } </script>
3. 逆向ICSee APP核心协议
- 用Apktool反编译安卓APK,查看
smali代码或提取lib目录下的so文件,重点定位含WebSocket、RTSP、auth关键词的网络请求类。 - 用Jadx将APK转成Java代码,搜索
connect、stream、login等关键词,梳理设备认证与视频流获取的逻辑。 - 若发现自定义协议,用Wireshark抓局域网内摄像头IP的原始数据包,分析协议头与数据格式,再模拟请求实现对接。
4. 借助第三方监控平台整合
- 使用ZoneMinder、Blue Iris等开源监控平台,先将ICSee摄像头添加为设备(直接识别失败的话,用FFmpeg转码后添加为自定义流媒体源)。
- 通过平台提供的API,在自定义浏览器面板中调用视频流,快速实现多设备监控的界面整合。
内容的提问来源于stack exchange,提问作者Theristes Gomes
相关产品推荐
相关产品推荐

