1、实现从摄像头拉流后AI处理;
2、实现将处理后的流HTTP-FLV推送;
3、实现无人值守关闭流;
具体框架图如下:
说明:
1、通过epoll线程池监听TCP连接,抢到fd的epoll线程去处理后期该fd上的所有事物;
2、两种请求,第一是携带配置创建流,第二种是根据创建流返回的http-flv url拉流。
3、创建流就是创建一条可以处理流链路的线程,线程创建后,立即返回,回复客户端,回复的body里面包含创建的流的http-flv地址。
1)创建流的时候先去查询该路视频是否已经被创建,如果已经被创建,则直接返回该路流的http-flv.
4、处理流链路流程为:
1)拉流
2)解码
3)AI处理
4)可视化处理
5)编码
6)送入媒体源
5、拉流
1)检查流是否存在,不存在直接返回404
2)流存在,发送flv tag
6、服务启动的时候,总共有两种线程池需要创建,第一种是epoll线程池,第二种是AI模型检测线程池。
7、三个全局队列,第一个是存放所有相机解码图片,第二是存放所有相机AI处理后图片,AI模型线程池从上述第一个队列中争夺处理图片,处理后的图片放在第二个队列中,各路过滤模块从第二个队列中获取属于自己流的处理后图片做可视化处理(框线,轨迹,以及稳定性处理)。
8、第三个队列为MediaSource队列,创建的视频源都存放在该队列中,每个视频源有一个环形队列和分发器,通过处理该路请求的epoll线程发送数据。