• 智能家居之智能监控小记


    1.手机是如何连接摄像头

    第一次连接的时候摄像头需要通过网线和路由器连接,会给摄像头分配一个ip地址,手机使用uid、密码通过ip地址进行连接,类似javaweb中的登陆访问操作

    2.第一次怎么连接摄像头

    首次连接摄像头需要通过网线去连接摄像头,然后手机通过wifi连接路由器,必须得到同一个网段下,然后通过手机去添加摄像头,因为我们已经有uid和密码了,所以不用添加,这样就会在手机中存储下摄像头的相关 信息,添加成功,就可以把网线拔了,下次连接的时候会从手机中将摄像头的信息拿出来,这样就可以实现使用手机在不同网段中连接摄像头了。

    3.操作时阻塞现象

    手机去连接摄像头的时候,是开了一个子线程通过jni调用.so文件中的方法去连接的,为了避免阻塞现象的发送,sdk中对所有的子线程都做了加锁操作,避免线程阻塞

    4.摄像头内部如何实现

    摄像头内部封装了一个微型liunx系统和一个微型的web服务器,我们发送指令是发送给web服务器,然后web服务器根据指令,通过一些算法去告诉摄像头执行什么操作,通过在返还给摄像头一些信息

    5.移动操作中的指令参数:触控点、辅助设备

    触控点:sdk中支持直接用手指在屏幕上滑动实现移动、放大等操作,所有会有一个触 控点的参数,辅助设备:摄像头支持外接麦克风和音响,所以会有一个辅助设备的参数存在,一般触控点和辅助设备我们都有0表示就可以了,代表使用系统默认的参数

    Init ();
    调用init放的时候会通过jni调用.so文件中的方法去初始化IOTC(物联云联机平台)模块,同时初始化av通道的最大数量(av就是音频audio和视频video,用于信号的输入、输出),为连接做准备


    New camera()?
    初始化uid和密码(初始化uid和密码为空字符串)  uid :20位的一个摄像头的唯一标示,密码 :连接摄像头的密码


    registerIOTCListener()?
    设置一个监听IOTC指令的回调监听,用于监听指令的返回信息


    Connect(uid)?
    将我们的uid赋值给camera中uid属性,然后开启一个线程去连接设备,再开启一个线程检验设备的状态


    Start()
    将通道号(手机和摄像头进行连接的一个通道的编号,必须保持一致,如果不一致会导致指令无法发送成功)、用户名、密码设置到av通道中,并开启一个线程启动设备


    sendIOCtrl(channel,type,data[])
    将指令添加到指令执行的队列当中去等待执行,类似MessageQueue


    Type:AVIOCTRLDEFs.IOTYPE_USER_IPCAM_GETSUPPORTSTREAM_REQ
    获取用户摄像头支持的流信息的请求指令类型
    IOTYPE:IO指令的类型
    user:用户
    IPCAM :ip camera 
    getsupportstream :获取支持的流信息
    req :request请求


    data[] :指令的参数


    attachCamera(Camera,channel)
    设置一个回调监听来获取返回的图片信息,同时开启一个渲染线程通过while循环使用Canvas videoCanvas = mSurHolder.lockCanvas();不停的进行图片渲染


    startShow();
    开启一个线程接收视频信息,同时在开启一个线程进行视频解码操作

  • 相关阅读:
    Consul运行
    springcloud+Zookeeper测试
    解决:sql2005 安装完后 没有服务的问题
    asp.net dataTable添加列
    C#关闭word进程
    无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”
    C#网页采集
    C#计算时间差值
    C#播放声音
    C#打开得到路径
  • 原文地址:https://www.cnblogs.com/xunbu7/p/8117931.html
Copyright © 2020-2023  润新知