地平线平台方案用法概要 - housekeeper-software/soft GitHub Wiki
人脸识别
只需要用地平线SDK即可完成识别。通过文档分析,大概可知识别过程是芯片里完成,地平线SDK通过总线读取人脸框位置和识别结果即可。大概如此。
无需通过摄像头抓拍进行比对。具体看地平线SDK文档。
#RGB摄像头预览
使用地平线SDK即可。
#视频编码
在底层需要编码的时候,会通过 onRequestExternalVideoFrameEncode 通知上层。
此刻启动编码工作,然后通过 onExternalVideoFrameAvailable将编码后的数据送到SDK底层。
编码也用地平线SDK。使用android MediaCodec无法完成。
需要注意的是:
目前这款方案,RGB摄像头只支持 608X1072,要对图像进行剪裁后编码,剪裁通过地平线SDK:
CamH264EncOpen(ctx,640,480...):表明编码输出的图像大小为640X480。
CamH264EncSetCrop(ctx,1,0,0,608,456...):表示从左上角开始剪裁,按照4:3的比例进行剪裁。室内机只能看到图像的上部分。
其他的参数需通过如下方法设置:
CamH264EncSetParam:这个看地平线SDK。其中需要注意的是:
maxIFrameInterval:设置为30,意思是每隔30帧就要编码一帧关键帧。对于实时媒体来说,这个间隔不能太大,否则对端丢包花屏很长时间不能恢复。
这里还需要注意:
第一帧出来的一般是PPS,SPS信息,不超过100个字节,需要保存起来。
每个关键帧前面都要附带上述的信息。非关键帧不需要。