CN115174941B - 基于多路视频流的实时运动表现分析及实时数据共享方法 - Google Patents
基于多路视频流的实时运动表现分析及实时数据共享方法 Download PDFInfo
- Publication number
- CN115174941B CN115174941B CN202210789198.0A CN202210789198A CN115174941B CN 115174941 B CN115174941 B CN 115174941B CN 202210789198 A CN202210789198 A CN 202210789198A CN 115174941 B CN115174941 B CN 115174941B
- Authority
- CN
- China
- Prior art keywords
- data
- frame
- picture
- real
- sequence queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/218—Source of audio or video content, e.g. local disk arrays
- H04N21/21805—Source of audio or video content, e.g. local disk arrays enabling multiple viewpoints, e.g. using a plurality of cameras
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/218—Source of audio or video content, e.g. local disk arrays
- H04N21/2187—Live feed
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
- H04N21/44008—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics in the video stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/472—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
- H04N21/47217—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for controlling playback functions for recorded or on-demand content, e.g. using progress bars, mode or play-point indicators or bookmarks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/63—Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
- H04N21/643—Communication protocols
- H04N21/6437—Real-time Transport Protocol [RTP]
Abstract
本发明公开了一种基于多路视频流的实时运动表现分析及实时数据共享方法,通过相机初始化模块对多个工业相机进行初始化管理;采用取流模块对每个工业相机开启一个独立的线程进行数据采集;GPU处理模块每次获取数据时,帧率控制模块将当前一个图片序列队列的数据复制拷贝分别存储成一级备份图片序列队列和二级备份图片序列队列;GPU处理模块每次获取数据后,调用深度学习模型,用YOLOv5框架对每一帧长图进行识别,数据计算模块id的实时运动表现数据传输至对应的远端展示设备端;二级备份图片序列队列中的每一帧数据独立更新传输并存储至对应的远端展示设备端,通过高速替换图片达到视频流播放效果。
Description
技术领域
本发明涉及多路视频流技术领域,具体为一种基于多路视频流的实时运动表现分析及实时数据共享方法。
背景技术
目前获取实时运动数据常用的手段是借助可穿戴设备如GPS等,利用GPS给出的经纬度信息,测算出运动员的跑动距离、速度等运动指标,但是只能用在训练场景下,在实际比赛场景中无法穿戴设备。也有类似基于工业相机画面识别球员位置计算运动数据的,但是所使用的工业相机多为定制,成本高,而且需要固定安装在场地边,对场地本身有一定的基础建设要求。
在目前的多路视频流场景下,实时目标识别和目标追踪存在几个问题:
1.目前常采用的基于RTMP、HTTP-FLV、HLS等协议搭建直播系统,RTMP/HTTP-FLV/HLS协议有较大延迟,HLS通常有10s以上,RTMP/HTTP-FLV通常需要缓冲5-10s,因此还需要搭建一套流媒体服务器,操作繁琐,不适合非专业人员使用,同时为了保证性能,对运行流媒体服务的硬件设备也有要求,通常需要高性能的CPU和充足的内存空间;播放设备端(安卓、IOS、Windows、Mac OS、浏览器)由于各个平台本身的限制,无法使用统一的协议,需要根据各个设备编写播放流的程序,不同设备之间的播放体验不一致。
2.视频流的帧率和模型推理速度之间存在差异,大多数情况下,视频流的帧率都大于模型推理速度,单路视频场景下通常采用跳帧的方式,即每隔x帧取一次视频流数据,其他帧则被丢弃。
3.各路视频流之间的帧率同样存在差异,即使对于同一路视频流,在实际情况下也会受到网络波动、机器性能瓶颈等原因,造成帧率不稳定。
发明内容
(一)解决的技术问题
针对现有技术的不足,本发明提供了一种基于多路视频流的实时运动表现分析及实时数据共享方法,针对竞技体育场景定制化标注数据、训练模型,能够实时追踪视频画面中的球员和球,利用透视变换将识别出的人或球映射到2D平面,以此从多个维度计算实时运动数据;还利用http协议multipart/x-mixed-replace头特性,通过返回图片流高速替换实现视频回放,这样可以解决了图片替换的形式刷新图片,达到视频播放,还可以使播放设备端(安卓、IOS、Windows、Mac OS、浏览器)打破平台本身的限制,使用统一的协议,使不同设备之间的播放体验一致;进一步降低整个系统的复杂性,避免额外搭建视频直播系统(即流媒体服务器),大大降低了成本,同时也降低常见直播系统带来的延时,实际延时在1s左右,延迟可以忽略不计。
(二)技术方案
为实现以上目的,本发明通过以下技术方案予以实现:一种基于多路视频流的实时运动表现分析及实时数据共享方法,包括以下步骤:
步骤S1,通过相机初始化模块对多个工业相机进行初始化管理;
步骤S2,采用取流模块对每个工业相机开启一个独立的线程进行数据采集;
取流模块中的帧率控制模块包含一个图片序列队列,工业相机总数与一个图片序列队列数一致,每个工业相机都对应一个图片序列队列中的一个索引位置,每个工业相机输出的视频流被其独立的线程不断取图片帧,每个独立的线程将采集到的每一帧数据更新到一个图片序列队列对应的索引位置;
步骤S3,GPU处理模块每次获取数据时,帧率控制模块将当前一个图片序列队列的数据复制拷贝分别存储成一级备份图片序列队列和二级备份图片序列队列;
步骤S31,设置一级备份图片序列队列中每个图片帧的内存地址,使得一级备份图片序列队列内相邻图片帧之间的内存地址连续,接着通过用于将备份图片序列队中的所有图片帧垂直堆叠合并成一张连续的长图的模型将备份图片序列队中的所有图片帧垂直堆叠合并成一张连续的长图,再发送到GPU处理模块;
步骤S311,GPU处理模块每次获取数据后,调用深度学习模型,用YOLOv5框架对每一帧长图进行识别,识别出的结果作为DeepSort框架的输入,执行目标追踪任务,最终输出数据为(frame_id, timestamp, id, x, y),其中frame_id为数据帧标识,timestamp为标准时间戳,id为每个识别出的对象标识, x、y为识别出的对象在视频画面中的位置的横纵坐标;
步骤S312,数据计算模块根据GPU处理模块输出的frame_id,对一级备份图片序列队列中每个工业相机的每一帧数据独立计算,识别出id出现时的坐标和工业相机编码,并计算id的实时运动表现数据,还将id的实时运动表现数据通过数据共享模块传输至对应的远端展示设备端;
步骤S32,二级备份图片序列队列中的每一帧数据独立通过数据共享模块更新传输并存储至对应的远端展示设备端,通过高速替换图片达到视频流播放效果;
步骤S4,在每个远端展示设备端通过定时器生成进度条,当拖拽进度条时,分别计算拖拽前、后位置与进度条起始点之间的像素距离,通过比例计算拖拽后的画面在已录制视频文件中的位置,然后进行回放。
进一步优选的,在步骤S1中,相机初始化模块对多个工业相机进行初始化管理至少包括括相机搜索、画面设置、取流设置。
进一步优选的,数据计算模块对每个工业相机每一帧数据独立计算时,首先数据计算模块对每个工业相机建立单独的工业相机维度计算模型,每个工业相机维度计算模型计算对应的工业相机所拍摄视角的坐标系,然后数据计算模块将相邻工业相机所拍摄的重合视角的坐标系进行坐标转换标定,再根据GPU处理模块输出的frame_id,识别出id出现时的坐标和工业相机编码。
进一步优选的,数据计算模块对每个工业相机的多帧数据进行计算后,根据id在每帧数据中出现时的坐标和工业相机编码,来计算id的实时运动表现数据。
进一步优选的,每次数据计算模块完成一帧的计算时,都将计算结果与对应二二级备份图片序列队列中的每一帧数据推送到对应的远端展示设备端的数据队列中,每个远端展示设备端动态根据自身处理速度从自己的数据队列中拉取数据。
进一步优选的,在步骤S32中,二级备份图片序列队列中的每一帧数据以多维数组的形式存储于对应的远端展示设备端,对应的远端展示设备端使用opencv将多维数组形式的数据编码成jpg格式的数据,对应的远端展示设备端利用http协议multipart/x-mixed-replace头特性,将编码后的jpg格式的数据以二进制流的形式输出,同时,在响应头中设置数据类型为multipart/x-mixed-replace; boundary=frame,使浏览器在处理返回数据时,用当前帧的数据替换上一帧的数据,通过高速替换图片达到视频流的效果。
进一步优选的,在步骤S4中,二级备份图片序列队列中的每一帧数据通过比例计算拖拽后的画面在已录制视频文件中的位置后,开启两个进程,一个通过ffmpeg从已录制视频文件对应位置开始输出二进制流,另一个进程不断读取二进制流,将其编码成jpg格式的数据,然后以图片流的形式返回到远端展示设备端。
本发明还包括一种应用上述多路视频流的实时运动表现分析及实时数据共享方法的系统,包括多个工业相机、帧率控制模块、GPU处理模块、数据计算模块、一级备份图片序列队列、二级备份图片序列队列、远端展示设备端;
所述工业相机用于采集所拍摄的视角内的图像数据;
所述帧率控制模块用于利用独立的线程对每个工业相机输出的视频流不断取图片帧,每个独立的线程将采集到的每一帧数据更新到一个图片序列队列对应的索引位置;当GPU处理模块每次获取数据时,帧率控制模块还将当前一个图片序列队列的数据复制拷贝分别存储成一级备份图片序列队列和二级备份图片序列队列;并设置一级备份图片序列队列中每个图片帧的内存地址,使得一级备份图片序列队列内相邻图片帧之间的内存地址连续,接着通过用于将备份图片序列队中的所有图片帧垂直堆叠合并成一张连续的长图的模型将备份图片序列队中的所有图片帧垂直堆叠合并成一张连续的长图,再发送到GPU处理模块;
GPU处理模块用于调用深度学习模型,用YOLOv5框架对每一帧长图进行识别,识别出的结果作为DeepSort框架的输入,执行目标追踪任务,最终输出数据为(frame_id,timestamp, id, x, y),其中frame_id为数据帧标识,timestamp为标准时间戳,id为每个识别出的对象标识, x、y为识别出的对象在视频画面中的位置的横纵坐标;
数据计算模块用于根据GPU处理模块输出的frame_id,对一级备份图片序列队列中每个工业相机的每一帧数据独立计算,识别出id出现时的坐标和工业相机编码,并计算id的实时运动表现数据,还将id的实时运动表现数据通过数据共享模块传输至对应的远端展示设备端。
进一步优选的,还包括数据共享模块,所述数据共享模块用于将GPU处理模块处理之后的图片帧画面数据和数据计算模块输出的实时运动表现数据共享到局域网内呈现给远端展示设备端。
进一步优选的,所述远端展示设备端包括多个子展示设备端,每个子展示设备端分别独立展示其对应工业相机所拍摄的视频。
(三)有益效果
本发明提供了一种基于多路视频流的实时运动表现分析及实时数据共享方法,具备以下有益效果:
1、本发明采用实现了GenICam(相机通用接口)的工业相机作为输入源,结合最新的开源目标识别框架YOLOv5和目标追踪框架DeepSort,统一了目标识别和目标追踪的输入输出格式,方便替换为其他框架;针对竞技体育场景定制化标注数据、训练模型,能够实时追踪视频画面中的球员和球,利用透视变换将识别出的人或球映射到2D平面,以此从多个维度计算实时运动数据。
2、本发明设置了帧率控制模块,帧率控制模块的优势在于,GPU处理视频流数据时,完全不需要从视频流处即时获取,避免造成等待或阻塞的情况,多路视频流也只需要关心自身的取流,互相之间没有干扰。当视频流帧率小于GPU处理速度时,GPU处理模块每次获取的一级备份图片序列队列可能没有变化,反映到目标识别结果就是目标没有移动;当视频流帧率大于GPU处理速度时,由于是GPU处理模块主动发起请求,获取到的是最新的视频流数据,所以速度控制权在GPU处理模块,实际效果就是丢弃各路视频流的某几帧,丢弃的帧数由视频流本身的帧率和当前GPU处理速度动态调整,从而解决现有各路视频流之间的帧率同样存在差异以及视频流的帧率和模型推理速度之间存在差异的技术难题。
3、本发明每个工业相机的工作线程独立取流,将每一帧数据更新到图片序列队列对应的索引位置,每当图片序列队列中的数据有更新,则将图片序列队列当前数据垂直堆叠合并成一张连续的长图,再发送到GPU处理模块,这样做的好处是对于每次工作线更新数据到图片序列队列时,不需要考虑图片序列队列中其他位置的数据有没有更新,即各个相机之间互不干扰,同时GPU处理模块可以一次处理多个相机数据,提高整体的处理速度。
4、本发明直接将GPU处理模块输出的每一帧画面输出到远端展示设备端,通过图片替换的形式刷新图片,达到视频播放的效果,这样可以降低整个系统的复杂性,避免额外搭建视频直播系统,同时也降低常见直播系统带来的延时,实际延时在1s左右,延迟可以忽略不计。
5、本发明对于计算数据传输,则使用websocket技术,考虑到服务器性能优于客户端设备,对于每个通过websocket和服务器建立连接的客户端,都维护一个独立的数据队列,每次数据计算模块完成一帧的计算时,将计算结果推送到所有客户端的数据队列中,每个客户端动态根据自身处理速度自由地从自己的数据队列中拉取数据,消除了服务器和客户端以及客户端之间的性能差异对系统整体带来的影响。
6、本发明工业相机数量可拓展,理论上可添加任意多个工业相机,多个相机数据会整合以提高置信度,工业相机体积小,便于携带,可以不依赖场地条件随时使用本发明。
7、本发明采用通过定时器实现一个类似进度条的功能,利用http协议multipart/x-mixed-replace头特性,通过返回图片流高速替换实现视频回放,这样可以解决了图片替换的形式刷新图片,达到视频播放,而不能采用常规方法回放的技术难题。
8、本发明采用多个小型的工业相机和一台服务器就可以将多个工业相机拍摄的球场数据和球员的运动数据传输至远端展示设备端,这样能够大大简化拍摄设备,是拍摄设备便于携带运输,还能降低成本,可以满足小型场地的拍摄需求。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
图1是发明的流程图;
图2是本发明的结构框图;
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要理解的是,术语“上”、“下”、“前”、“后”、“左”、“右”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
目前常规的视频直播方案采用ffmpeg + nginx + RTMP/HTTP-FLV/HLS协议,详细如下:
1. ffmpeg拉取视频源,这里的视频源包括本地视频文件、线上视频url、网络摄像头url等,但是无法处理通过USB方式连接的相机。
2. ffmpeg对视频源进行编码,通常编码成H264格式。
3.搭建支持RTMP/HTTP-FLV/HLS协议的流媒体服务器,这里以nginx为例,由于操作系统的限制,只能使用linux操作系统,为了支持上述协议,需要手动下载相关模块并重新编译nginx,并且RTMP/HTTP-FLV/HLS协议有较大延迟,HLS通常有10s以上,RTMP/HTTP-FLV通常需要缓冲5~10s。
4. ffmpeg将视频流推送到nginx服务。
5. nginx对外提供各个协议的访问地址,如rtsp://**、rtmp://**等。
6.播放端根据自身设备支持的协议访问对应的nginx地址,播放端(安卓、IOS、Windows、Mac OS、浏览器)由于各个平台本身的限制,无法使用统一的协议,需要根据各个设备编写播放流的程序,不同设备之间的播放体验不一致。
7.需要搭建一套流媒体服务器,操作繁琐,不适合非专业人员使用,同时为了保证性能,对运行流媒体服务的硬件设备也有要求,通常需要高性能的CPU和充足的内存空间。
在目前的多路视频流场景下,实时目标识别和目标追踪还存在几个问题:
1.视频流的帧率和模型推理速度之间存在差异,大多数情况下,视频流的帧率都大于模型推理速度,单路视频场景下通常采用跳帧的方式,即每隔x帧取一次视频流数据,其他帧则被丢弃。在多路视频流场景下,由于单个模型同时只能进行一个推理任务,跳帧可以平衡单个视频流和单个模型之间速度差异,但各个视频流帧到达时间不一致,会造成相互等待的情况,严重影响最终的实时效果。这种情况下,通常的解决方法是使用多张GPU显卡,每个显卡各加载一个推理模型,专门处理某一路视频流,显然这样的处理方式成本较高。
2.各路视频流之间的帧率同样存在差异,即使对于同一路视频流,在实际情况下也会受到网络波动、机器性能瓶颈等原因,造成帧率不稳定,所以无法准确知道下一帧图片什么时候会到。通常的做法是借助硬件触发线,利用高低电平的变化控制每个工业相机取流的速度。这种做法只适用于IP工业相机,无法用于USB工业相机,同时要求工业相机之间距离较近,否则信号传输不稳定而且触发线的硬件成本也会提高。
实施例1;
为了更好的解决上面的问题,本发明提供一种技术方案:请参阅图1,一种基于多路视频流的实时运动表现分析及实时数据共享方法,包括以下步骤:
步骤S1,通过相机初始化模块对多个工业相机进行初始化管理;
由于选用GenICam的工业相机,因此开发出一套通用的机初始化模块,包括相机搜索、画面设置、取流设置等,这与相机设备的生产厂商无关,使得在采购相机或镜头时有最大的自由性;
步骤S2,采用取流模块对每个工业相机开启一个独立的线程进行数据采集。
本发明对多路视频流进行同时采集,考虑到每个工业相机取流的速度、CPU/GPU处理速度等不一致,没有采取常规的硬件触发或者是循环取流统一输出的方式,因为会由于木桶效应影响整体的处理速度。因此本发明针对搜索到的每个相机设备开启一个独立的线程t。
取流模块中的帧率控制模块包含一个图片序列队列Q,工业相机总数与一个图片序列队列Q数一致,每个工业相机都对应一个图片序列队列Q中的一个索引位置,每个工业相机输出的视频流被其独立的线程不断取图片帧,每个独立的线程将采集到的每一帧数据更新到一个图片序列队列对应的索引位置,这样做的好处是对于每次独立的线程t更新数据到图片序列队列Q时,不需要考虑图片序列队列Q中其他位置的数据有没有更新,即各个工业相机之间互不干扰,同时GPU处理模块可以一次处理多个工业相机数据,提高整体的处理速度。
步骤S3,GPU处理模块每次获取数据时,帧率控制模块将当前一个图片序列队列的数据复制拷贝分别存储成一级备份图片序列队列和二级备份图片序列队列;
步骤S31,设置一级备份图片序列队列中每个图片帧的内存地址,使得一级备份图片序列队列内相邻图片帧之间的内存地址连续,接着通过用于将备份图片序列队中的所有图片帧垂直堆叠合并成一张连续的长图的模型将备份图片序列队中的所有图片帧垂直堆叠合并成一张连续的长图,再发送到GPU处理模块;
步骤S311,GPU处理模块每次获取数据后,调用深度学习模型,用YOLOv5框架对每一帧长图进行识别,识别出的结果作为DeepSort框架的输入,执行目标追踪任务,最终输出数据为(frame_id, timestamp, id, x, y),其中frame_id为数据帧标识,timestamp为标准时间戳,id为每个识别出的对象标识, x、y为识别出的对象在视频画面中的位置的横纵坐标;
步骤S312,数据计算模块根据GPU处理模块输出的frame_id,对一级备份图片序列队列中每个工业相机的每一帧数据独立计算,识别出id出现时的坐标和工业相机编码,并计算id的实时运动表现数据,还将id的实时运动表现数据通过数据共享模块传输至对应的远端展示设备端;
数据计算模块对每个工业相机每一帧数据独立计算时,首先数据计算模块对每个工业相机建立单独的工业相机维度计算模型,每个工业相机维度计算模型计算对应的工业相机所拍摄视角的坐标系,然后数据计算模块将相邻工业相机所拍摄的重合视角的坐标系进行坐标转换标定,再根据GPU处理模块输出的frame_id,识别出id出现时的坐标和工业相机编码。
数据计算模块对每个工业相机的多帧数据进行计算后,根据id在每帧数据中出现时的坐标和工业相机编码,来计算id的实时运动表现数据。
步骤S32,二级备份图片序列队列中的每一帧数据独立通过数据共享模块更新传输并存储至对应的远端展示设备端,通过高速替换图片达到视频流播放效果;
二级备份图片序列队列中的每一帧数据以多维数组的形式存储于对应的远端展示设备端,对应的远端展示设备端使用opencv将多维数组形式的数据编码成jpg格式的数据,对应的远端展示设备端利用http协议multipart/x-mixed-replace头特性,将编码后的jpg格式的数据以二进制流的形式输出,同时,在响应头中设置数据类型为multipart/x-mixed-replace; boundary=frame,使浏览器在处理返回数据时,用当前帧的数据替换上一帧的数据,通过高速替换图片达到视频流的效果。
步骤S4,在每个远端展示设备端通过定时器生成进度条,当拖拽进度条时,分别计算拖拽前、后位置与进度条起始点之间的像素距离,通过比例计算拖拽后的画面在已录制视频文件中的位置,然后进行回放。
每次数据计算模块完成一帧的计算时,都将计算结果与对应二二级备份图片序列队列中的每一帧数据推送到对应的远端展示设备端的数据队列中,每个远端展示设备端动态根据自身处理速度从自己的数据队列中拉取数据。
进行回放时,二级备份图片序列队列中的每一帧数据通过比例计算拖拽后的画面在已录制视频文件中的位置后,开启两个进程,一个通过ffmpeg从已录制视频文件对应位置开始输出二进制流,另一个进程不断读取二进制流,将其编码成jpg格式的数据,然后以图片流的形式返回到远端展示设备端。
本发明采用远端展示设备端利用http协议multipart/x-mixed-replace头特性,将编码后的jpg格式的数据以二进制流的形式输出,同时,在响应头中设置数据类型为multipart/x-mixed-replace; boundary=frame,使浏览器在处理返回数据时,用当前帧的数据替换上一帧的数据,通过高速替换图片达到视频流的效果,这样设计的好处是降低整个系统的复杂性,避免额外搭建视频直播系统(即流媒体服务器),大大降低了成本,同时也降低常见直播系统带来的延时,实际延时在1s左右,延迟可以忽略不计。并且本发明利用http协议multipart/x-mixed-replace头特性,可以使播放设备端(安卓、IOS、Windows、MacOS、浏览器)打破平台本身的限制,使用统一的协议,使不同设备之间的播放体验一致。
此外本发明采用多个小型的工业相机和一台服务器就可以将多个工业相机拍摄的球场数据和球员的运动数据传输至远端展示设备端,这样能够大大简化拍摄设备,降低成本,可以满足小型场地的拍摄需求。
实施例2:
本发明还包括一种应用上述多路视频流的实时运动表现分析及实时数据共享方法的系统,如图2所示,包括多个工业相机、帧率控制模块、GPU处理模块、数据计算模块、一级备份图片序列队列、二级备份图片序列队列、远端展示设备端。
工业相机用于采集所拍摄的视角内的图像数据。
由于视频流源头的帧率不好控制,因此本发明一个帧率的基准线,并以此为基础平衡系统中其他模块的处理速度。本发明采用GPU处理模块就是这个基准线,因为无论视频流的帧率快慢与否,最终都需要经过GPU处理模块,也就是说GPU处理模块的处理速度是系统处理速度的瓶颈。因此本发明在视频流输出模块和GPU处理模块之间添加了帧率控制模块。
帧率控制模块用于利用独立的线程对每个工业相机输出的视频流不断取图片帧,每个独立的线程将采集到的每一帧数据更新到一个图片序列队列对应的索引位置;当GPU处理模块每次获取数据时,帧率控制模块还将当前一个图片序列队列的数据复制拷贝分别存储成一级备份图片序列队列和二级备份图片序列队列;并设置一级备份图片序列队列中每个图片帧的内存地址,使得一级备份图片序列队列内相邻图片帧之间的内存地址连续,接着通过用于将备份图片序列队中的所有图片帧垂直堆叠合并成一张连续的长图的模型将备份图片序列队中的所有图片帧垂直堆叠合并成一张连续的长图,再发送到GPU处理模块。
具体实现如下:如图2所示,假设有N个工业相机,N路视频流为V,帧率控制模块包含一个图片序列队Q,图片序列队Q的长度等于N,即每路视频流Vi (0 ≤ i ≤ N-1)都对应了图片序列队Q中的下标i,对于每路视频流有独立的线程Ti不断的取图片帧,然后将图片序列队Q中对应下标的数据替换成最新取到的图片帧数据,在这个过程中,每路视频流之间完全独立,不存在系统资源的竞争关系,因此能够极大的提高并发处理速度。GPU处理模块每次需要数据时,帧率控制模块将图片序列队Q的数据拷贝一份一级备份图片序列队列Q′,一级备份图片序列队列Q′中的数据是当前所有视频流最新的一帧图片,由于单模型同时只能处理一个推理任务,所有需要将一级备份图片序列队列Q中所有的图片帧拼成一张整体提交给模型处理,这里采用的方法是设置一级备份图片序列队列Q′中每个图片帧的内存地址,使得相邻图片帧之间的内存地址连续,这样一级备份图片序列队列Q′在计算机中传输时实际就可以当成一张大的连续的图片。
按上,帧率控制模块的优势在于,GPU处理模块处理视频流数据时,完全不需要从视频流处即时获取,避免造成等待或阻塞的情况,多路视频流也只需要关心自身的取流,互相之间没有干扰。当视频流帧率小于GPU处理速度时,GPU处理模块每次获取的一级备份图片序列队列Q′可能没有变化,反映到目标识别结果就是目标没有移动;当视频流帧率大于GPU处理速度时,由于是GPU处理模块主动发起请求,获取到的是最新的视频流数据,所以速度控制权在GPU处理模块,实际效果就是丢弃各路视频流的某几帧,丢弃的帧数由视频流本身的帧率和当前GPU处理模块处理速度动态调整。
复用上述帧率控制模块中的图片序列队Q,同样拷贝一份二级备份图片序列队列Q″在实时播放场景下,根据用户选择的工业相机下标i,从二级备份图片序列队列Q″中获取对应工业相机最新的画面,图片数据在计算机中以多维数组的形式存储,这里使用opencv将原始的数组形式的数据编码成jpg格式的数据,利用http协议multipart/x-mixed-replace头特性,将编码后的jpg数据以二进制流的形式输出,同时,在响应头中设置数据类型为multipart/x-mixed-replace; boundary=frame,这样远端展示终端比如浏览器在处理返回数据时,每次都会用最新的数据替换原来的数据,通过高速替换图片帧就可以达到视频流的效果。为了满足可以同时浏览多路视频流或者在不同设备端浏览同一个视频流,使用协程的方式,使得不同请求之间可以并发进行。
GPU处理模块用于调用深度学习模型,用YOLOv5框架对每一帧长图进行识别,识别出的结果作为DeepSort框架的输入,执行目标追踪任务,最终输出数据为(frame_id,timestamp, id, x, y),其中frame_id为数据帧标识,timestamp为标准时间戳,id为每个识别出的对象标识, x、y为识别出的对象在视频画面中的位置的横纵坐标;
数据计算模块是基于双向链表的数据结构实现了一个单生产者多消费者模型,GPU处理模块作为生产者提供每一帧的识别数据,数据计算模块启动多个线程读取识别数据,每个线程根据自己的计算公式计算出特定维度的数据,同样的,每个线程处理过程独立,数据计算模块以frame_id为标识自动整个每个线程计算出的数据。
具体的为数据计算模块用于根据GPU处理模块输出的frame_id,对一级备份图片序列队列中每个工业相机的每一帧数据独立计算,识别出id出现时的坐标和工业相机编码,并计算id的实时运动表现数据,还将id的实时运动表现数据通过数据共享模块传输至对应的远端展示设备端。
本发明还包括数据共享模块,数据共享模块用于将GPU处理模块处理之后的图片帧画面数据和数据计算模块输出的实时运动表现数据共享到局域网内呈现给远端展示设备端。
远端展示设备端包括多个子展示设备端,每个子展示设备端分别独立展示其对应工业相机所拍摄的视频,用户可对每个子展示设备端进行拖拽回放,且每个子展示设备端独立,相互不影响。
回放场景在这里是指在直播场景下,用户通过拖拽进度条的形式回看之前的视频画面。这里通常的做法是搭建一套完整直播系统,使用 HLS、RTSP等协议传输视频流,服务器端还需实现一套时移系统用于直播场景下的回放。这种做法复杂度较高,对性能、稳定性没有严格高要求时,这种做法就显得很笨重。
本发明在直播场景下,视频录制模块将各路视频流实时保存到本地对应视频文件,通常情况下,通过返回一个完整的视频文件流就可以达到拖拽回放的效果,但是在本发明的场景下,在视频录制没有完成之前无法知晓视频的总时长。这里本发明依然利用http协议multipart/x-mixed-replace头特性,通过返回图片流高速替换实现视频回放。这样做的话设备端在展示是就无法使用通用的视频加载和控制组件,因此本发明通过定时器实现一个类似进度条的功能,当拖拽进度条时,分别计算拖拽前、后位置和进度条起始点之间的像素距离,通过比例计算来近似确定拖拽后的画面在已录制视频文件中的位置。在已知位置的情况下,开启两个进程,一个通过ffmpeg从已录制视频文件对应位置开始输出二进制流,另一个进程不断读取二进制流,将其编码成jpg文件,然后同样图片流的形式返回到设备端。
在本发明的描述中,需要理解的是,指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、 “示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (10)
1.一种基于多路视频流的实时运动表现分析及实时数据共享方法,其特征在于:包括以下步骤:
步骤S1,通过相机初始化模块对多个工业相机进行初始化管理;
步骤S2,采用取流模块对每个工业相机开启一个独立的线程进行数据采集;
取流模块中的帧率控制模块包含一个图片序列队列,工业相机总数与一个图片序列队列数一致,每个工业相机都对应一个图片序列队列中的一个索引位置,每个工业相机输出的视频流被其独立的线程不断取图片帧,每个独立的线程将采集到的每一帧数据更新到一个图片序列队列对应的索引位置;
步骤S3,GPU处理模块每次获取数据时,帧率控制模块将当前一个图片序列队列的数据复制拷贝分别存储成一级备份图片序列队列和二级备份图片序列队列;
步骤S31,设置一级备份图片序列队列中每个图片帧的内存地址,使得一级备份图片序列队列内相邻图片帧之间的内存地址连续,接着通过用于将备份图片序列队中的所有图片帧垂直堆叠合并成一张连续的长图的模型将备份图片序列队中的所有图片帧垂直堆叠合并成一张连续的长图,再发送到GPU处理模块;
步骤S311,GPU处理模块每次获取数据后,调用深度学习模型,用YOLOv5框架对每一帧长图进行识别,识别出的结果作为DeepSort框架的输入,执行目标追踪任务,最终输出数据为(frame_id, timestamp, id, x, y),其中frame_id为数据帧标识,timestamp为标准时间戳,id为每个识别出的对象标识, x、y为识别出的对象在视频画面中的位置的横纵坐标;
步骤S312,数据计算模块根据GPU处理模块输出的frame_id,对一级备份图片序列队列中每个工业相机的每一帧数据独立计算,识别出id出现时的坐标和工业相机编码,并计算id的实时运动表现数据,还将id的实时运动表现数据通过数据共享模块传输至对应的远端展示设备端;
步骤S32,二级备份图片序列队列中的每一帧数据独立通过数据共享模块更新传输并存储至对应的远端展示设备端,通过高速替换图片达到视频流播放效果;
步骤S4,在每个远端展示设备端通过定时器生成进度条,当拖拽进度条时,分别计算拖拽前、后位置与进度条起始点之间的像素距离,通过比例计算拖拽后的画面在已录制视频文件中的位置,然后进行回放。
2.根据权利要求1所述的基于多路视频流的实时运动表现分析及实时数据共享方法,其特征在于:在步骤S1中,相机初始化模块对多个工业相机进行初始化管理至少包括括相机搜索、画面设置、取流设置。
3.根据权利要求1所述的基于多路视频流的实时运动表现分析及实时数据共享方法,其特征在于:数据计算模块对每个工业相机每一帧数据独立计算时,首先数据计算模块对每个工业相机建立单独的工业相机维度计算模型,每个工业相机维度计算模型计算对应的工业相机所拍摄视角的坐标系,然后数据计算模块将相邻工业相机所拍摄的重合视角的坐标系进行坐标转换标定,再根据GPU处理模块输出的frame_id,识别出id出现时的坐标和工业相机编码。
4.根据权利要求3所述的基于多路视频流的实时运动表现分析及实时数据共享方法,其特征在于:数据计算模块对每个工业相机的多帧数据进行计算后,根据id在每帧数据中出现时的坐标和工业相机编码,来计算id的实时运动表现数据。
5.根据权利要求1所述的基于多路视频流的实时运动表现分析及实时数据共享方法,其特征在于:每次数据计算模块完成一帧的计算时,都将计算结果与对应二二级备份图片序列队列中的每一帧数据推送到对应的远端展示设备端的数据队列中,每个远端展示设备端动态根据自身处理速度从自己的数据队列中拉取数据。
6. 根据权利要求1所述的基于多路视频流的实时运动表现分析及实时数据共享方法,其特征在于:在步骤S32中,二级备份图片序列队列中的每一帧数据以多维数组的形式存储于对应的远端展示设备端,对应的远端展示设备端使用opencv将多维数组形式的数据编码成jpg格式的数据,对应的远端展示设备端利用http协议multipart/x-mixed-replace头特性,将编码后的jpg格式的数据以二进制流的形式输出,同时,在响应头中设置数据类型为multipart/x-mixed-replace; boundary=frame,使浏览器在处理返回数据时,用当前帧的数据替换上一帧的数据,通过高速替换图片达到视频流的效果。
7.根据权利要求6所述的基于多路视频流的实时运动表现分析及实时数据共享方法,其特征在于:在步骤S4中,二级备份图片序列队列中的每一帧数据通过比例计算拖拽后的画面在已录制视频文件中的位置后,开启两个进程,一个通过ffmpeg从已录制视频文件对应位置开始输出二进制流,另一个进程不断读取二进制流,将其编码成jpg格式的数据,然后以图片流的形式返回到远端展示设备端。
8.一种应用如权利要求1-7所述的任一项多路视频流的实时运动表现分析及实时数据共享方法的系统,其特征在于:包括多个工业相机、帧率控制模块、GPU处理模块、数据计算模块、一级备份图片序列队列、二级备份图片序列队列、远端展示设备端;
所述工业相机用于采集所拍摄的视角内的图像数据;
所述帧率控制模块用于利用独立的线程对每个工业相机输出的视频流不断取图片帧,每个独立的线程将采集到的每一帧数据更新到一个图片序列队列对应的索引位置;当GPU处理模块每次获取数据时,帧率控制模块还将当前一个图片序列队列的数据复制拷贝分别存储成一级备份图片序列队列和二级备份图片序列队列;并设置一级备份图片序列队列中每个图片帧的内存地址,使得一级备份图片序列队列内相邻图片帧之间的内存地址连续,接着通过用于将备份图片序列队中的所有图片帧垂直堆叠合并成一张连续的长图的模型将备份图片序列队中的所有图片帧垂直堆叠合并成一张连续的长图,再发送到GPU处理模块;
GPU处理模块用于调用深度学习模型,用YOLOv5框架对每一帧长图进行识别,识别出的结果作为DeepSort框架的输入,执行目标追踪任务,最终输出数据为(frame_id,timestamp, id, x, y),其中frame_id为数据帧标识,timestamp为标准时间戳,id为每个识别出的对象标识, x、y为识别出的对象在视频画面中的位置的横纵坐标;
数据计算模块用于根据GPU处理模块输出的frame_id,对一级备份图片序列队列中每个工业相机的每一帧数据独立计算,识别出id出现时的坐标和工业相机编码,并计算id的实时运动表现数据,还将id的实时运动表现数据通过数据共享模块传输至对应的远端展示设备端。
9.根据权利要求8所述的系统,其特征在于:还包括数据共享模块,所述数据共享模块用于将GPU处理模块处理之后的图片帧画面数据和数据计算模块输出的实时运动表现数据共享到局域网内呈现给远端展示设备端。
10.根据权利要求8所述的系统,其特征在于:所述远端展示设备端包括多个子展示设备端,每个子展示设备端分别独立展示其对应工业相机所拍摄的视频。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210789198.0A CN115174941B (zh) | 2022-07-06 | 2022-07-06 | 基于多路视频流的实时运动表现分析及实时数据共享方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210789198.0A CN115174941B (zh) | 2022-07-06 | 2022-07-06 | 基于多路视频流的实时运动表现分析及实时数据共享方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115174941A CN115174941A (zh) | 2022-10-11 |
CN115174941B true CN115174941B (zh) | 2023-03-24 |
Family
ID=83491561
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210789198.0A Active CN115174941B (zh) | 2022-07-06 | 2022-07-06 | 基于多路视频流的实时运动表现分析及实时数据共享方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115174941B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115861082B (zh) * | 2023-03-03 | 2023-04-28 | 无锡沐创集成电路设计有限公司 | 一种低延时图片拼接系统及方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111382737A (zh) * | 2018-12-29 | 2020-07-07 | 深圳光启空间技术有限公司 | 多路负载均衡异步目标检测方法、存储介质及处理器 |
CN110347440B (zh) * | 2019-06-24 | 2022-06-03 | 北京人大金仓信息技术股份有限公司 | 基于多进程并发和插件向数据库快速加载数据方法和系统 |
CN113378616A (zh) * | 2020-03-09 | 2021-09-10 | 华为技术有限公司 | 视频分析方法、视频分析的管理方法及相关设备 |
CN112616024A (zh) * | 2020-12-31 | 2021-04-06 | 深兰科技(上海)有限公司 | Usb摄像头数据获取方法、装置、电子设备和存储介质 |
CN113221706B (zh) * | 2021-04-30 | 2024-03-22 | 西安聚全网络科技有限公司 | 基于多进程的多路视频流的ai分析方法及系统 |
CN113873345B (zh) * | 2021-09-27 | 2023-11-14 | 中国电子科技集团公司第二十八研究所 | 一种分布式的超高清视频同步处理方法 |
-
2022
- 2022-07-06 CN CN202210789198.0A patent/CN115174941B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115174941A (zh) | 2022-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11490054B2 (en) | System and method for adjusting an image for a vehicle mounted camera | |
US10893261B2 (en) | Positional zero latency | |
US9781356B1 (en) | Panoramic video viewer | |
US20120293613A1 (en) | System and method for capturing and editing panoramic images | |
US20170125064A1 (en) | Method and Apparatus for Automatic Video Production | |
US11748870B2 (en) | Video quality measurement for virtual cameras in volumetric immersive media | |
US7561187B2 (en) | Image distributing apparatus | |
KR20190031504A (ko) | 파노라마 비디오의 상호작용적 전송을 위한 방법 및 시스템 | |
CN103795976A (zh) | 一种全时空立体可视化方法 | |
CN107205122A (zh) | 多分辨率全景视频直播拍照系统与方法 | |
KR101964126B1 (ko) | 고화질 동영상의 스트리밍 전송 장치 및 방법 | |
JP2019159950A (ja) | 情報処理装置および情報処理方法 | |
CN104539929A (zh) | 带有运动预测的立体图像编码方法和编码装置 | |
CN107592549B (zh) | 基于双向通信的全景视频播放拍照系统 | |
CN115174941B (zh) | 基于多路视频流的实时运动表现分析及实时数据共享方法 | |
CN115639976B (zh) | 一种虚拟现实内容多模式多角度同步展示方法及系统 | |
Park et al. | Seaware: Semantic aware view prediction system for 360-degree video streaming | |
KR102107055B1 (ko) | 기계학습 기반의 스포츠 중계 영상 추천 방법 및 장치 | |
CN111869223A (zh) | 沉浸式媒体的视场角度量 | |
CN108769755A (zh) | 高分辨率全景视频直播拍照系统与方法 | |
AU2019271924B2 (en) | System and method for adjusting an image for a vehicle mounted camera | |
Feng et al. | LiveROI: region of interest analysis for viewport prediction in live mobile virtual reality streaming | |
US20220165308A1 (en) | Point of view video processing and curation platform | |
CN103533215A (zh) | 录播系统 | |
CN107707830A (zh) | 基于单向通信的全景视频播放拍照系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |