视频上云服务EasyCVR已经开发集成了海康SDK、Ehome协议等私有协议,目前其他的协议也在拓展当中,有兴趣的用户可以看一下我们的Ehome协议开发过程(Ehome协议调用流程介绍)。
EasyCVR目前正在研发AI智能分析集成功能,将智能分析结果插入视频流成为我们首要解决的问题,我们使用了FFmpeg中插入SEI信息流程。
生成SEI的方式基本可以归类为一下三种:
1、对已有码流做filter,插入SEI NAL;
2、视频编码时生成SEI;
3、容器层写入时插入SEI。
一、EasyCVR选择1中的方式,参考FFMepg 中bsf,在不做码流解码的前提下,对已经编码后的比特流做特定的修改、调整. 插入时遵循SPS+PPS+SEI+IDR 的顺序
Ffmpeg h264_metadata_bsf.c
以上代码完整解释了SEI规范,其中"H264_SEI_TYPE_USER_DATA_UNREGISTERED"值为5,对应的即是未注册的用户信息。在解析"ffmpeg"工具输入过程中,将"+“号前面的字符串转换成二进制写入uuid,”+"后内容使用字符串写入payload。
二、码流中随机插入SEI,如下:
随机插入指的是 不遵循sps+pps+sei+idr 的顺序,根据需要随机插入,保证前端获取信息的实时性,可能的顺序为SEI+P+P+SEI+P+P+P
加入SEI信息成功后,码流SEI部分如下图所示
EasyCVR安防视频云服务的主要功能是将本地局域网内连通的RTSP视频源,通过RTMP协议推送到阿里、腾讯等公有云厂商的视频服务中,同时具备本地存储文件的能力,可接入SDK、支持H265视频流编解码、支持电视墙等功能。