门禁终端参数配置说明 - housekeeper-software/soft GitHub Wiki

AppConf

SDK的全局配置,需要在调用其他任何SDK方法之前设置

app_version: 集成App的版本号,此版本号会报告给管理平台  
channel:渠道编码,表示OEM渠道码,自由产品为JX,此字段会报告给管理平台,并且也用于授权验证服务器判断产品来源  
work_dir:SDK的工作目录,用于在此目录存储一些状态,android可以设置在sdcard,比如/sdcard/data/doorkeeper/access,IOS可以给沙盒里的目录  
media_dir:访客录像保存位置,可以是work_dir的子目录,或者另给一个新的目录,只要可写即可。 
log_to_file:日志是否保存到文件中,SDK启动的时候会自动创建新的日志文件。 发行版无需设置,否则容易造成SDCard满  
log_level:日志等级,0表示详细日志,发行版一般设置为 Fatal级别。  
timezone: 当前系统的时区,主要用来设置默认DNS,比如中国时区,默认DNS为114.114.114.114,其他地方可以设置为8.8.8.8.  

ClientConf

终端参数,如果一个APP支持多个家庭,那么每个家庭都需要一份,其中family_id每个家庭都不能相同

type:表示终端类型,门禁客户端使用 NetClientTypeClient  
sub_type: 表示终端子类型,具体而言是设备的类型,比如pad,mobile,需要正确设置。  
family_id: 表示家庭唯一标识,这个可以系统自行协商,此标识非常重要,拥有相同标识的设备被认为是同一个家庭。因而可以互相发现,互相呼叫。  
alias:每个设备可以有一个可读别名,比如客厅,卧室...  
button_key:此处标识在同一个家庭里,各个设备唯一的按键标识。01:标识为主机,其他的自行定义。尤其在分体机的场景下,button_key用于响应分离设备的按键事件。  
pushid:此标识非常重要,对于移动端设备来说,要想接收到推送消息,必须正确设置此标识,此标识应等同于推送标识。  
sn:设备的唯一标识,可以用序列号也可以用MAC地址,对于移动端,可以用用户ID  

PortConf

告知SDK,这里设置的TCP/UDP端口不能被使用,某些特定设备有其他的应用需要占用特殊端口,可以在这里设置,这样,SDK不会再使用这些端口

tcp_reserver:tcp保留端口,可以有多个,中间用逗号分隔  
udp_reserver:udp保留端口,可以有多个,中间用逗号分隔  
port_range:指明SDK使用的端口范围,比如"30000,34000,35000",分别表示:最小端口,最大端口,ICE起始端口。如果在同一个设备运行代理和终端,二者的端口范围最好不要重叠。  

MCUConf

单片机的设置参数,只有京希一体机有MCU

watchdog:一般设置为 60000:10000:1,分别表示:60秒超时:10秒喂狗:1表示看门狗使能,一体机MCU中没有超时重启设备的功能,不能依然需要如此设置  
serial:表示MCU串口的参数设置,/dev/ttyS1:115200,分别表示:设备名称:波特率  
security_bus_name:安防内部总线的名称:可以参考代理的配置,比如 @/tmp/security, @开头表示虚拟命令空间,可以参考unix socket namespace技术规范  

ProxyConf

代理的配置,对于终端来说,通过这些参数来寻找网络中的代理设备

lan_proxy_broadcast_port: 本地网络中代理的侦听端口,默认为10000  
multicast_address:代理同时在指定的组播地址上侦听,默认为238.18.18.1  
heartbeat_interval: 终端与代理连接的心跳周期,默认为60秒  
enable_lan_broadcast: 使能子网广播寻找代理  
lan_discovery_enable:是否禁止子网寻找代理,一般为允许,这样当移动端处于家庭网络中,可以在本地网络发现代理  
proxy_server:用于查找通讯服务器的websocket 接口地址  
ssl_cert_path:如果需要设置ssl通讯,此处设置证书存放路径  
ssl_cert_private_key:证书的口令  
lan_broadcast_exclude_interface:子网广播可以排除某些接口,避免广播包泄漏到其他网络中  
master_device:当前设备是否是主机设备  

ServerConfig

用于获取SIP账号的配置

url:获取SIP账号的websocket 接口地址  
auth_user:用户名,可以为空,由服务器分配  
auth_pwd: 密码,可以为空,由服务器分配  
cache_filename:账号可以缓存到本地,这里指定缓存的文件名称  
retry_interval: 失败重试的周期,单位为秒  

CaptureConfig

摄像头采集的参数配置,摄像头的输出分辨率可以不同于编码的分辨率。一般而言,对于移动端我们可以要求摄像头输出高于编码分辨率的图像
因为摄像头输出的是旋转过的图像,比如我们要求摄像头输出640X480,但是移动端输出的是经过选择90度或者270度的图像,我们要旋转然后剪裁到编码分辨率
如果摄像头分辨率高于编码分辨率,则可以获得更佳的图像解析度。

capture_video_width: 视频宽度  
capture_video_height:视频高度  
capture_video_fps:帧率  
capture_video_format: 摄像头输出的视频格式,对Android平台无效,由SDK自行决定。  
camera_type:选择摄像头的方式,默认为1:表示按照前后摄像头来选择,非移动平台,有其他的选择方式  
camera_name: 摄像头的名称,此处的参数由camera_type来定义具体的含义。  
uvc:表示是否使用USB摄像头,只有瑞芯微的平台支持  
max_cache:表示摄像头输出帧的内存池的大小,一般为4,对于特别低端的设备,可以设置稍大一些。  
screen_portrait:表示本设备是否工作在竖屏模式,目前只有室外机版本可以设置为true,其他所有平台为false。  

VideoCodecConfig

视频编解码参数

video_encode_profile:h264的profile,默认值即可  
video_encode_avg_bps:平均码率,默认值即可  
video_encode_max_bps:最大码率,默认值即可  
video_encode_gopsize:I帧和P帧的比率,一般可以为30,表示每30帧输出一阵I帧和29帧P帧。I帧是关键帧,可以独立解码,占用空间较大,P帧是参考帧。  
video_encode_qcompress:默认值即可  
video_encode_qblur: 默认值即可  
video_encode_qmin:  默认值即可  
video_encode_qmax: 默认值即可  
video_encode_crf:一般设置为23,以上参数可以参考x264编码参数的配置  
video_encode_codec:1,表示h264.    
video_frame_mtu:不要设置,主要是限制编码帧的大小,比如设置为1400,则每个编码帧被分隔为1400字节的大小  
video_encode_preset: 必须设置为veryfast  
video_encode_tune: 必须设置为:animation+zerolatency, 这两个参数表示无延迟编码  
video_encode_codec_width: 视频编码尺寸,就是想要传输给对端的视频尺寸  
video_encode_codec_height:编码高度  
frame_rate:编码帧率  
video_decode_engine: 视频编码器选择,对于android平台有两种选择,0:表示ffmpeg,1:表示MediaCodec,其他平台只有一种选择。android移动端必须选择0,确保兼容性。  
video_encode_engine: 时评解码器的选择,其他同上  

IntercomConfig

门禁的配置

audio_samplerate:表示voip通话时音频采样率,这个采样率不同于声卡实际的采样率,SDK在传输之前会重采样。  
audio_channels:voip通话的音频通道数,一般为1  
bits_per_sample:音频样本位长度,一般为16  
disable_aec:禁止软件回音消除。在某些特定设备上已经内置了硬件回音消除芯片,但是通过Framework不能检测到,此刻需要强制设置为禁止软件回音消除。比如px30设备  
aec_latency:软件回音消除的尾长,专有设备需要使用第三方软件来评估测量。比如3288平台为80,移动端默认为150。永远不要设置为0  
audio_engine:音频声卡的引擎。只对android有效,可以有0:java,1:AAudio(8.0版本以后),2:Opensles. 如果需要获得低延迟音频,必须使用Opensles或者AAudio。但是为了  
              兼容性考虑,我们优先选择Opensles,对于移动端必须使用java。也只有选择java才能使能framework内置的回音消除,其他的选择必须有软件回音消除的支持,除了   
              disable_aec说明的场景。  简单的说,如果有disable_aec=true,则选择哪种引擎都无所谓。如果disable_aec=false,只能选择java,这可以适配系统内置的  
              回音消除,当系统不支持回音消除的时候,会自动启动软件回音消除。  
max_audio_delay_us:在产品评测的时候,可以调整为80000或者更低,主要看是否出现音频断续,其他情况一律不低于120000.这里代表是微秒。  
audio_low_latency:是否使能低延迟音频传输。只有在评测的时候才使能。并且只对局域网传输有效。  
audio_play_agc_level:发送给对端的音频增益,0~30,0表示不增益,只有发现对端接收到的声音较小才需要设置。这个适配不同的室外机。  
audio_send_agc_level:如果本机播放对端音频音量较小,可以增益  
audio_play_agc_compression_gain_db:默认为为9  根据 audio_play_agc_level而定。如果audio_play_agc_level=0,则此项无效  
audio_send_agc_compression_gain_db: 默认为9, 根据audio_send_agc_level而定  
audio_play_denoise:播放的声音是否去噪  
audio_send_denoise: 发送的声音是否去噪  
blank_color:如果需要禁止视频的时候,可以传纯色的图像,这里指定RGBA的值  
max_session_wait_time:振铃最长等待事件,默认为60s,这项设置更长可能没有意义,因为振铃时间也由对端决定。 超时未接听,对端可以直接挂断了。  
intercom_max_session_connect_time:最长通话时间,这项也可能由对端来决定。每个室外机的配置略有不同。
special_p2p_device:户户通的通话时长设置:"p2p,1800,300",表示:设备名称:LAN通话最长时间:WAN通话最长时间  
speical_ext_device:室内通通话时长设置:ext,2592000,86400,表示:设备名称:LAN通话最长时间:WAN通话最长时间  
                    室内通有很多场景,有时候起到监控的作用,在局域网的情况下,可以设置数十个小时的通话时间。但是使用WAN通话,可能需要流量,所以可以设置的短一些  
                    另外,某些SIP服务器也有时间限制。超过一定时间会将会话终止。  

SipConfig

SIP账号的设置

一般,我们只要指定的server_conf,即可由SDK自动获得SIP配置。SDK暴露的配置只是用于测试或者其他需要手工配置的场景。