CN111757145B - 一种多路负载均衡的监控视频的批量处理方法 - Google Patents

一种多路负载均衡的监控视频的批量处理方法 Download PDF

Info

Publication number
CN111757145B
CN111757145B CN202010758872.XA CN202010758872A CN111757145B CN 111757145 B CN111757145 B CN 111757145B CN 202010758872 A CN202010758872 A CN 202010758872A CN 111757145 B CN111757145 B CN 111757145B
Authority
CN
China
Prior art keywords
video
processing
thread
current
downloading
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
Application number
CN202010758872.XA
Other languages
English (en)
Other versions
CN111757145A (zh
Inventor
梁效宁
杨博
代涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan Masterpiece Precision Equipment LLC
Original Assignee
Sichuan Masterpiece Precision Equipment LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sichuan Masterpiece Precision Equipment LLC filed Critical Sichuan Masterpiece Precision Equipment LLC
Priority to CN202010758872.XA priority Critical patent/CN111757145B/zh
Publication of CN111757145A publication Critical patent/CN111757145A/zh
Application granted granted Critical
Publication of CN111757145B publication Critical patent/CN111757145B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/23103Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion using load balancing strategies, e.g. by placing or distributing content on different disks, different memories or different servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/2312Data placement on disk arrays
    • H04N21/2318Data placement on disk arrays using striping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23406Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving management of server-side video buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/235Processing of additional data, e.g. scrambling of additional data or processing content descriptors

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Closed-Circuit Television Systems (AREA)

Abstract

本发明公开了一种多路负载均衡的监控视频的批量处理方法,其特征在于包括以下步骤:S100:下载监控视频;S200:合并监控视频;S300:判断所述首次下载参数是否为true,如果是,执行步骤S400,否则执行步骤S500;S400:计算下载速率;S500:判断视频处理类型是否为需处理视频,如果是,执行步骤S600,否则执行步骤S107;S600:转码处理和倍速处理,包括:将当前协议数据添加到视频处理队列中并设置并行处理多线程的阈值N;S700:从视频处理队列中移除当前协议数据;S800:判断是否完成监控视频的批量处理,如果是,结束流程,否则,执行步骤S100。

Description

一种多路负载均衡的监控视频的批量处理方法
技术领域
本发明属于视频处理领域,涉及一种多路负载均衡的监控视频的批量处理方法。
背景技术
随着人们生活质量的提高、电子设备的日新月异、信息时代的促进和发展,监控设备在系统与功能方面不断被创新智能化、人性化。安防监控系统也在人们日常生活中逐渐被重视和普及起来。对于监控时间段较长的视频查看需花费大量的时间,如果对多个较长时间段的视频查看,更需要加倍的时间。现需要一种对多个视频均衡处理的方法,来弥补这一缺点。
现有技术的处理视频还停留在传统的方式上,即,单个视频手动处理,如需对处理完的视频再次处理,则需要人工值守,这样需浪费大量的等待时间,且还有如下弊端:
1.处理视频的操作需单个对其处理,不能批量同时生成处理任务;
2.未能发挥服务器的强大处理能力,浪费服务器硬件资源;
3.需用户在线值守处理任务过程;
4.如对视频进行多样化的处理时,需要专业人员编写复杂的处理命令。
发明内容
针对现有技术的不足,本发明提供了一种多路负载均衡的监控视频的批量处理方法,针对监控视频的提取和处理,均采用自动化模式,在视频处理过程中以服务器硬件处理能力来动态分配每个处理任务的线程数量,从而实现多路负载均衡的监控视频的批量处理。
本发明申请包括以下步骤:
S100:下载监控视频,包括以下步骤:
S101:预设监控设备的登录参数;
S102:登录监控设备并创建队列,所述队列包括下载队列和视频处理队列,所述队列为存储协议数据的容器;
S103:开启线程并监听队列中的任务,同时创建事务,所述事务为临时容器,用以存储所监听队列的信息;
S104:设置首次下载参数并接收协议数据,所述首次下载参数类型为布尔类型;
S105:解析所述协议数据的参数并保存到数据库的任务表中,返回当前任务id并将当前任务id记录到当前协议数据中;
S106:将当前协议数据添加到下载队列中,用以顺序处理下载队列中的任务;
S107:采用先进先出的原则,获取下载队列中包含协议数据的任务,根据当前协议数据中的参数,访问所述监控设备的接口并下载指定时间段的视频;
S200:合并监控视频,包括以下步骤:
S201:下载完成后,将所下载的多个视频合并为完整的视频,用以后续对视频的处理;
S202:以当前任务id命名所合并的视频,并存储到指定磁盘路径中;
S203:根据协议数据中的任务id,将所合并的视频的绝对路径保存到数据库中;
S204:从下载队列中移除当前协议数据,用以避免下载相同的视频;
S300:判断所述首次下载参数是否为true,如果是,执行步骤S400,否则执行步骤S500;
S400:计算下载速率;
S500:判断视频处理类型是否为需处理视频,如果是,执行步骤S600,否则执行步骤S107;
S600:转码处理和倍速处理,包括:将当前协议数据添加到视频处理队列中并设置并行处理多线程的阈值N,所述步骤S600包括以下步骤:
S601:对所述首次下载参数赋初值为true,并行处理多线程的初值为1;
S602:创建线程池,用以管理视频及处理多线程;设置并行处理多线程的阈值为N,其中,N为大于1的自然数;
S603:判断是否首次获取视频处理队列中的任务,如果是,执行步骤S604,否则执行步骤S606;
S604:记录当前时间为起始时间,对当前视频进行转码处理和倍速处理,记录转码处理和倍速处理完成的时间为结束时间;
S605:计算单线程每秒处理视频的速度并记录为服务器处理能力,执行步骤S700;
S606:动态分配各个线程中转码处理和倍速处理所执行的线程数量;
S700:从视频处理队列中移除当前协议数据;
S800:判断是否完成监控视频的批量处理,如果是,结束流程,否则,执行步骤S100。
优选地,所述步骤S400包括以下步骤:
S401:获取下载时长,单位为秒;
S402:获取视频的大小,单位为M字节;
S403:所述视频的大小除以所述下载时长的商并记录在事务中,作为所述下载速率;
S404:将所述首次下载参数更新为false。
优选地,所述步骤S604包括以下步骤:
S6041:根据当前线程中协议数据的任务id,在所述数据库中获取对应视频的绝对路径;
S6042:获取当前视频的大小:当前线程中协议数据的视频下载结束时间减视频下载开始时间的差,作为视频时长,所述视频时长乘以所述下载速率的积,作为所述当前视频的大小;
S6043:获取当前线程在视频处理队列中的协议数据中的开始时间和结束时间;
S6044:执行视频处理:对当前视频进行转码处理和倍速处理。
优选地,所述步骤S605包括以下步骤:
S6051:获取当前视频的时长;
S6052:所述当前视频的大小除以当前视频的时长的商,作为单线程每秒处理视频的速度并记录为服务器处理能力,所述当前视频的时长是指对当前视频进行转码处理和倍速处理完成时间与开始时间的时间差。
优选地,所述步骤S606包括以下步骤:
S6061:获取各个线程中各个视频的时长的总和:将各个线程中所接收到协议数据中各个视频的下载时长进行累加,所累加的值以秒为单位,作为各个视频的时长的总和;
S6062:获取各个线程中各个视频的大小的总和:将各个线程中各个视频的时长的总和乘以下载速率,所得的积以M字节为单位,作为各个视频的大小的总和;
S6063:计算处理单线程视频需要的总时长:各个视频的大小的总和除以单线程每秒处理视频的速度的商,作为处理单线程视频需要的总时长;
S6064:计算当前可用空闲线程数处理速度的平均值:处理单线程视频需要的总时长除以空闲线程数量的商,作为当前可用空闲线程数处理速度的平均值;
S6065:计算线程池中各个线程的所需线程数量并对各个线程分配所需线程数量。
优选地,所述步骤S6065包括以下步骤:
S60651:根据各个线程的协议数据,获取各个视频的下载时长,所述各个视频的时长乘以所述下载速率的积,作为当前线程的协议数据所包含的视频大小;
S60652:所述当前线程的协议数据所包含的视频大小除以所述单线程每秒处理视频的速度的商,作为单线程的处理时长;
S60653:所述单线程的处理时长除以所述当前可用空闲线程数处理速度的平均值的商,作为当前线程所需线程数量;
S60654:按所述步骤S60651至S60653的方法,计算线程池中各个线程的所需线程数量并对各个线程分配所需线程数量。
优选地,所述步骤S700包括以下步骤:
S701:根据任务id,将转码处理和倍速处理后所生成的指定视频格式的绝对地址保存到所述数据库任务表的相对应字段中;
S702:判断当前的首次下载参数是否为true,如果是,执行步骤S702,否则,执行步骤S703;
S702:将当前的首次下载参数赋值为false;
S703:从视频处理队列中移除当前协议数据,用以避免处理相同的视频。
本发明的有益效果是:
1、多任务批量导入、批量处理模式。
2、对任务处理视频不同的大小采用不同的线程数量,充分发挥服务器硬件处理能力,确保多个任务完成的时间相近。
3、预设处理流程,服务自动化处理,无需在线值守。
附图说明
图1为本发明所提供的方法的总流程图。
具体实施方式
本实施例以海康威视的视频设备及其监控视频为例。
为更好地理解和阐述本发明的技术方案,可能会使用如下的术语:
协议数据:本服务为视频处理服务,需提供协议数据,处理服务解析协议数据中的参数,根据不同的参数对视频做相应的处理。
参数模板:
{"transcode_type":1,"speed":20,"info":[{"start_time":"2020-06-28 08:45:00","end_time":"2020-06-28 18:45:00","channel_number":6}]}
参数说明:
transcode_type:视频处理类型:0表示原视频,即,无需处理的视频;1表示视频处理,即,需处理的视频。
speed:处理视频的倍速值。
info:数组容器,用于存放多个监控通道的下载信息。
start_time:视频下载的开始时间
end_time:视频下载的结束时间
channel_number:监控录像机的下载的通道号
以上参数都为非空,除transcode_type参数值为0时,speed可以为空。
视频下载:根据协议数据中的start_time、end_time和channel_number参数值从视频监控机下载相应视频。
视频合并命令:由于海康录像机视频下载文件大小的限制,下载超过1G的视频会被分割成单独的mp4文件,每个mp4文件上限为1G,所以我们要使用第三工具FFmpeg工具对下载好的视频进行合并,FFmpeg不能直接合并MP4格式的视频,要先将视频文件转为ts格式视频,将ts格式视频地址写入指定的txt文件中,然后txt文件中的多个ts格式视频进行合并,最后输出MP4格式的视频。
FFmpeg转ts格式视频命令为:
ffmpeg-i inFile-threads threadCount-preset ultrafast-vcodec copy-acodec copy-vbsf h264_mp4toannexb outFile
可变参数:
inFile:原MP4格式视频绝对路径地址
threadCount:线程数量,视频处理服务动态分配,默认为1
outFile:输出ts格式视频绝对路径地址
FFmpeg视频合并命令:
ffmpeg-f concat-safe 0-i txtFile-c copy outFile
可变参数:
txtFile:txt文件绝对路径地址
outFile:输出mp4格式视频绝对路径地址
视频转码命令:将下载完合并为MP4视频,利用FFmpeg进行转码,转码的目的是改变监控视频的质量大小,这样方便存储。
FFmpeg转码的命令为:
ffmpeg-i inFile-threads threadCount-preset ultrafast-b:v bitRate-sresolution-r frameRate outFile
固定参数:
bitRate:码率,视频处理服务预设参数值
resolution:分辨率,视频处理服务预设参数值
frameRate:帧速,视频处理服务预设参数值
可变参数:
inFile:视频合并后的MP4格式视频的绝对路径地址。
threadCount:线程数量,视频处理服务动态分配,默认为1
outFile:转码输出的MP4格式视频的绝对路径地址
倍速处理命令:根据命令中的参数将转码后的视频进行倍速处理,这样利于提高查看视频速度。
FFmpeg倍速处理命令:
ffmpeg-i outfile-threads threadCount-preset ultrafast-filter:v setpts=value*PTS outFile
可变参数:
outFile:转码后的MP4视频的绝对路径地址。
threadCount:线程数量,视频处理服务动态分配
value:处理视频的倍速值,倍数值计算方式(1.0/协议参数中spped的参数值)。
outFile:倍速处理后输出的MP4格式视频的绝对路径地址。
图1示出了本发明所提供的方法的总流程图。如图1所示,包括以下步骤:
S100:下载监控视频,包括以下步骤:
S101:预设监控设备的登录参数。具体地,
定义参数hk_device_ip,类型为String,表示录像机IP地址;
定义参数hk_port,类型为int,表示录像机端口号;
定义参数hk_username,类型为String,表示录像机登录用户名;
定义参数hk_password,类型为String,表示录像机登录密码。
S102:登录监控设备并创建队列,队列包括下载队列和视频处理队列,队列为存储协议数据的容器;具体地,在视频处理服务启动后,自动登录到海康录像机,同时自动创建队列容器,即,下载队列和视频处理队列,其中,队列是用于存储协议数据的容器。
S103:开启线程并监听队列中的任务,同时创建事务,事务为临时容器,用以存储所监听队列的信息;由于海康威视视频设备的视频下载是单线程模式,监听下载队列则采用单线程监听模式,而视频处理队列采用多线程监听模式。
S104:设置首次下载参数并接收协议数据,首次下载参数类型为布尔类型;默认参数值为true。参数值为true表示视频处理服务是首次执行下载,需计算下载视频的速率;反之参数值为false,则不需要去计算。
S105:解析协议数据的参数并保存到数据库的任务表中,返回当前任务id并将当前任务id记录到当前协议数据中;
S106:将当前协议数据添加到下载队列中,用以顺序处理下载队列中的任务;具体地,接收到协议数据后,将协议数据中的参数解析后保存到数据库task表中,同时返回保存该条数据的唯一id,即,任务id,并将id填充到当前协议数据中。
例如,协议数据实施例为:
{"transcode_type":1,"task_id":1,
"speed":20,"info":[{"start_time":"2020-06-28
08:45:00","end_time":"2020-06-2818:45:00","channel_number":8}]}
S107:采用先进先出的原则,获取下载队列中包含协议数据的任务,根据当前协议数据中的参数,访问监控设备的接口并下载指定时间段的视频;本实施例中,监听到下载队列中有存在任务时,以队列任务先进先出的原则,下载队列单线程则获取下载队列中的协议数据任务,根据协议数据中的参数,访问海康威视sdk NET_DVR_GetFileByTime接口进行指定时间段视频下载。
S200:合并监控视频,包括以下步骤:
S201:下载完成后,将所下载的多个视频合并为完整的视频,用以后续对视频的处理;
S202:以当前任务id命名所合并的视频,并存储到指定磁盘路径中;例如,储存至电脑的D盘:D:\media\task_id\task_id.mp4,此处task_id为协议数据中的任务id。
S203:根据协议数据中的任务id,将所合并的视频的绝对路径保存到数据库中;即,将上述路径D:\media\task_id\task_id.mp4保存到数据库中;
S204:从下载队列中移除当前协议数据,用以避免下载相同的视频;
S300:判断首次下载参数是否为true,如果是,执行步骤S400,否则执行步骤S500;
S400:计算下载速率,包括以下步骤:
S401:获取下载时长,单位为秒;本实施例中,定义下载时长参数downloadTime,类型为long,参数值为当前下载协议数据中参数end_time-start_time,将结果转换为秒。
S402:获取视频的大小,单位为M字节;本实施例中,定义视频总大小参数mediaSize,类型为long,参数值为下载协议数据中的task_id,可到步骤S203中找出task_id对应的视频,并获取视频的大小,单位为M字节。
S403:视频的大小除以下载时长的商并记录在事务中,作为下载速率;本实施例中,定义每秒视频大小参数(即,下载速率)为secondsSize,类型为float,参数值为mediaSize/downloadTime.将secondsSize参数值保存到事务session中,以便视频处理服务全局获取使用。
S404:将首次下载参数更新为false。
S600:转码处理和倍速处理,包括:将当前协议数据添加到视频处理队列中并设置并行处理多线程的阈值N,步骤S600包括以下步骤:
S601:对首次下载参数赋初值为true,并行处理多线程的初值为1;
S602:创建线程池,用以管理视频及处理多线程;设置并行处理多线程的阈值为N,其中,N为大于1的自然数;本实施例中,将阀值N定义为5;换言之,线程池配置多线程数据上限为5个并发,意味着同时可以处理5个视频处理队列中的任务;
S603:判断是否首次获取视频处理队列中的任务,如果是,执行步骤S604,否则执行步骤S606;本实施例中,判断firstTime参数值,当值等于true时,即表示是第一次获取视频处理队列中的任务;
S604:记录当前时间为起始时间,对当前视频进行转码处理和倍速处理,记录转码处理和倍速处理完成的时间为结束时间;
本实施例中,创建startTime时间类型参数,参数值为当前时间,此时视频处理队列中只有一个待处理任务,视频处理方法中的线程池只会开启一个线程来接收当前待处理任务进行视频处理,我们需要对这一个任务进行服务器处理能力计算,包括以下步骤:
S6041:根据当前线程中协议数据的任务id,在数据库中获取对应视频的绝对路径;
具体地,根据当前线程获取到的协议数据中task_id到步骤S203中找出task_id对应的视频的绝对路径;定义参数mediaAddress作为当前视频的绝对路径;
S6042:获取当前视频的大小:当前线程中协议数据的视频下载结束时间减视频下载开始时间的差,作为视频时长,视频时长乘以下载速率的积,作为当前视频的大小;
本实施例中,定义参数mediaSize,参数值为当前线程获取到视频处理队列中协议数据end_time-start_time,得到差值,将差值转换为秒,再用以秒为单位的差值*secondsSize,结果当前线程所处理协议数据的视频大小。
S6043:获取当前线程在视频处理队列中的协议数据中的开始时间和结束时间;具体地,定义参数taskInfo,参数值为当前线程在视频处理队列中获取到的协议数据中的开始时间和结束时间;
S6044:执行视频处理:对当前视频进行转码处理和倍速处理。
具体地,使用视频转码命令,将下载完合并为MP4视频,利用FFmpeg进行转码,转码的目的是改变监控视频的质量大小,这样方便存储。
FFmpeg转码的命令为:
ffmpeg-i inFile-threads threadCount-preset ultrafast-b:v bitRate-sresolution-r frameRate outFile
使用倍速处理命令:根据命令中的参数将转码后的视频进行倍速处理,这样利于提高查看视频速度。
FFmpeg倍速处理命令:
ffmpeg-i outfile-threads threadCount-preset ultrafast-filter:v setpts=value*PTS outFile
值得注意的是,视频转码命令和视频倍速命令中参数为threadCount,其使用默认参数值。
视频处理结束后,定义时间类型的参数endTime,参数值为当前时间。
S605:计算单线程每秒处理视频的速度并记录为服务器处理能力,执行步骤S700;包括以下步骤:
S6051:获取当前视频的时长;具体地,定义参数longTime,类型为long。参数值为endTime-startTime,将差值转换为秒。这个差值也就是视频转码处理的耗费时长。
S6052:当前视频的大小除以当前视频的时长的商,作为单线程每秒处理视频的速度并记录为服务器处理能力,当前视频的时长是指对当前视频进行转码处理和倍速处理完成时间与开始时间的时间差。
具体地,定义参数singleThreadSpeed,类型为float,参数值为mediaSize/longTime。此值为单线程每秒处理视频速度。将singleThreadSpeed参数值保存到事务session中,以便全局获取使用;
S606:动态分配各个线程中转码处理和倍速处理所执行的线程数量,换言之,为保证多个处理线程同时完成任务,需动态给每个线程的视频转码处理命令和倍速处理命令添加不同的执行的线程数量,包括以下步骤:
S6061:获取各个线程中各个视频的时长的总和:将各个线程中所接收到协议数据中各个视频的下载时长进行累加,所累加的值以秒为单位,作为各个视频的时长的总和;
本实施例中,定义参数secondsSizeCount类型为long,参数值为所有线程中所接收到协议数据中参数end_time-start_time的差值进行累加。
将累加的值转换为以秒为单位的数值。
S6062:获取各个线程中各个视频的大小的总和:将各个线程中各个视频的时长的总和乘以下载速率,所得的积以M字节为单位,作为各个视频的大小的总和;
本实施例中,定义参数mediaSizeCount类型为long,参数值为secondsSizeCount*secondsSize的值。参数含义为线程池中所有线程总共处理视频的大小;
S6063:计算处理单线程视频需要的总时长:各个视频的大小的总和除以单线程每秒处理视频的速度的商,作为处理单线程视频需要的总时长;
本实施例中,定义参数singleThreadSpeedCount类型为long,参数值为mediaSizeCount/singleThreadSpeed的值,参数含义为单线程视频需要的总时长。
S6064:计算当前可用空闲线程数处理速度的平均值:处理单线程视频需要的总时长除以空闲线程数量的商,作为当前可用空闲线程数处理速度的平均值;
本实施例中,定义参数threadAvgSpeed类型为long,参数值为singleThreadSpeedCount/threadCount的值,参数含义为当前可用空闲线程数处理速度的平均值。
S6065:计算线程池中各个线程的所需线程数量并对各个线程分配所需线程数量,包括以下步骤:
S60651:根据各个线程的协议数据,获取各个视频的下载时长,各个视频的时长乘以下载速率的积,作为当前线程的协议数据所包含的视频大小;
本实施例中,根据线程所接收的协议数据,将协议数据的end_time-
start_time,得到差值,将差值转换为秒。将秒值*secondsSize,结果为当前线程所处理协议数据的视频大小。
S60652:当前线程的协议数据所包含的视频大小除以单线程每秒处理视频的速度的商,作为单线程的处理时长;换言之,将视频大小值/singleThreadSpeed,值为单个线程处理时长;
S60653:单线程的处理时长除以当前可用空闲线程数处理速度的平均值的商,作为当前线程所需线程数量;换言之,将单个线程处理时长值/threadAvgSpeed,其商作为当前线程所需要的处理线程数。
S60654:按步骤S60651至S60653的方法,计算线程池中各个线程的所需线程数量并对各个线程分配所需线程数量,即,将线程数赋值给视频转码和视频倍速处理命令中threadCount参数值。
S700:从视频处理队列中移除当前协议数据,包括以下步骤:
S701:根据任务id,将转码处理和倍速处理后所生成的MP4视频格式或者其他格式的视频的绝对地址保存到数据库任务表的相对应字段中;
具体地,根据线程所接收协议数据中的task_id,将视频转码处理命令和视频倍速处理命令中的outFile参数值保存到数据库task表相对应的字段中;
S702:判断当前的首次下载参数是否为true,如果是,执行步骤S702,否则,执行步骤S703;
S702:将当前的首次下载参数赋值为false;
S703:从视频处理队列中移除当前协议数据,用以避免处理相同的视频。
S800:判断是否完成监控视频的批量处理,如果是,结束流程,否则,执行步骤S100。
应当理解的是,本发明不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

Claims (3)

1.一种多路负载均衡的监控视频的批量处理方法,所述处理包括转码处理及批量倍速,其特征在于包括以下步骤:
S100:下载监控视频,包括以下步骤:
S101:预设监控设备的登录参数;
S102:登录监控设备并创建队列,所述队列包括下载队列和视频处理队列,所述队列为存储协议数据的容器;
S103:开启线程并监听队列中的任务,同时创建事务,所述事务为临时容器,用以存储所监听队列的信息;
S104:设置首次下载参数并接收协议数据,所述首次下载参数类型为布尔类型;
S105:解析所述协议数据的参数并保存到数据库的任务表中,返回当前任务id并将当前任务id记录到当前协议数据中;
S106:将当前协议数据添加到下载队列中,用以顺序处理下载队列中的任务;
S107:采用先进先出的原则,获取下载队列中包含协议数据的任务,根据当前协议数据中的参数,访问所述监控设备的接口并下载指定时间段的视频;
S200:合并监控视频,包括以下步骤:
S201:下载完成后,将所下载的多个视频合并为完整的视频,用以后续对视频的处理;
S202:以当前任务id命名所合并的视频,并存储到指定磁盘路径中;
S203:根据协议数据中的任务id,将所合并的视频的绝对路径保存到数据库中;
S204:从下载队列中移除当前协议数据,用以避免下载相同的视频;
S300:判断所述首次下载参数是否为true,如果是,执行步骤S400,否则执行步骤S500;
S400:计算下载速率;
S500:判断视频处理类型是否为需处理视频,如果是,执行步骤S600,否则执行步骤S107;
S600:转码处理和倍速处理,包括:将当前协议数据添加到视频处理队列中并设置并行处理多线程的阈值N,所述步骤S600包括以下步骤:
S601:对所述首次下载参数赋初值为true,并行处理多线程的初值为1;
S602:创建线程池,用以管理视频及处理多线程;设置并行处理多线程的阈值为N,其中,N为大于1的自然数;
S603:判断是否首次获取视频处理队列中的任务,如果是,执行步骤S604,否则执行步骤S606;
S604:记录当前时间为起始时间,对当前视频进行转码处理和倍速处理,记录转码处理和倍速处理完成的时间为结束时间;步骤S604包括以下步骤:
S6041:根据当前线程中协议数据的任务id,在所述数据库中获取对应视频的绝对路径;
S6042:获取当前视频的大小:当前线程中协议数据的视频下载结束时间减视频下载开始时间的差,作为视频时长,所述视频时长乘以所述下载速率的积,作为所述当前视频的大小;
S6043:获取当前线程在视频处理队列中的协议数据中的开始时间和结束时间;
S6044:执行视频处理:对当前视频进行转码处理和倍速处理;
S605:计算单线程每秒处理视频的速度并记录为服务器处理能力,执行步骤S700;步骤S605包括以下步骤:
S6051:获取当前视频的时长;
S6052:所述当前视频的大小除以当前视频的时长的商,作为单线程每秒处理视频的速度并记录为服务器处理能力,所述当前视频的时长是指对当前视频进行转码处理和倍速处理完成时间与开始时间的时间差,执行步骤S700;
S606:动态分配各个线程中转码处理和倍速处理所执行的线程数量,步骤S606包括以下步骤:
S6061:获取各个线程中各个视频的时长的总和:将各个线程中所接收到协议数据中各个视频的下载时长进行累加,所累加的值以秒为单位,作为各个视频的时长的总和;
S6062:获取各个线程中各个视频的大小的总和:将各个线程中各个视频的时长的总和乘以下载速率,所得的积以M字节为单位,作为各个视频的大小的总和;
S6063:计算处理单线程视频需要的总时长:各个视频的大小的总和除以单线程每秒处理视频的速度的商,作为处理单线程视频需要的总时长;
S6064:计算当前可用空闲线程数处理速度的平均值:处理单线程视频需要的总时长除以空闲线程数量的商,作为当前可用空闲线程数处理速度的平均值;
S6065:计算线程池中各个线程的所需线程数量并对各个线程分配所需线程数量,步骤S6065包括以下步骤:
S60651:根据各个线程的协议数据,获取各个视频的下载时长,所述各个视频的时长乘以所述下载速率的积,作为当前线程的协议数据所包含的视频大小;
S60652:所述当前线程的协议数据所包含的视频大小除以所述单线程每秒处理视频的速度的商,作为单线程的处理时长;
S60653:所述单线程的处理时长除以所述当前可用空闲线程数处理速度的平均值的商,作为当前线程所需线程数量;
S60654:按步骤S60651至S60653的方法,计算线程池中各个线程的所需线程数量并对各个线程分配所需线程数量;
S700:从视频处理队列中移除当前协议数据;
S800:判断是否完成监控视频的批量处理,如果是,结束流程,否则,执行步骤S100。
2.根据权利要求1所述的一种多路负载均衡的监控视频的批量处理方法,其特征在于,所述步骤S400包括以下步骤:
S401:获取下载时长,单位为秒;
S402:获取视频的大小,单位为M字节;
S403:所述视频的大小除以所述下载时长的商并记录在事务中,作为所述下载速率;
S404:将所述首次下载参数更新为false。
3.根据权利要求1所述的一种多路负载均衡的监控视频的批量处理方法,其特征在于,所述步骤S700包括以下步骤:
S701:根据任务id,将转码处理和倍速处理后所生成的指定视频格式的绝对地址保存到所述数据库任务表的相对应字段中;
S702:判断当前的首次下载参数是否为true,如果是,执行步骤S702,否则,执行步骤S703;
S702:将当前的首次下载参数赋值为false;
S703:从视频处理队列中移除当前协议数据,用以避免处理相同的视频。
CN202010758872.XA 2020-07-31 2020-07-31 一种多路负载均衡的监控视频的批量处理方法 Active CN111757145B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010758872.XA CN111757145B (zh) 2020-07-31 2020-07-31 一种多路负载均衡的监控视频的批量处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010758872.XA CN111757145B (zh) 2020-07-31 2020-07-31 一种多路负载均衡的监控视频的批量处理方法

Publications (2)

Publication Number Publication Date
CN111757145A CN111757145A (zh) 2020-10-09
CN111757145B true CN111757145B (zh) 2022-03-04

Family

ID=72712694

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010758872.XA Active CN111757145B (zh) 2020-07-31 2020-07-31 一种多路负载均衡的监控视频的批量处理方法

Country Status (1)

Country Link
CN (1) CN111757145B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112783481A (zh) * 2021-02-27 2021-05-11 中电万维信息技术有限责任公司 一种基于java多线程并发的ffmpeg转码方法
CN113727110A (zh) * 2021-08-27 2021-11-30 猪八戒股份有限公司 将h264格式转换为mp4格式的方法、装置及介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102868939A (zh) * 2012-09-10 2013-01-09 杭州电子科技大学 一种实时视频监控系统中音视频数据的同步方法
CN103412786A (zh) * 2013-08-29 2013-11-27 苏州科达科技股份有限公司 一种高性能服务器架构系统及数据处理方法
CN103647935A (zh) * 2013-11-19 2014-03-19 长沙中联重科环卫机械有限公司 视频数据存储方法及视频监控装置
US9450700B1 (en) * 2013-08-05 2016-09-20 Amazon Technologies, Inc. Efficient network fleet monitoring
CN108922188A (zh) * 2018-07-24 2018-11-30 河北德冠隆电子科技有限公司 雷达跟踪定位的四维实景交通路况感知预警监控管理系统
CN109348176A (zh) * 2018-10-26 2019-02-15 上海电气风电集团有限公司 集成有视频系统的风力发电机组监控与数据采集系统
CN109492024A (zh) * 2018-10-26 2019-03-19 平安科技(深圳)有限公司 数据处理方法、装置、计算机设备以及存储介质
CN111163297A (zh) * 2020-02-10 2020-05-15 迈享科技(深圳)有限公司 一种实现视频监控云存储高并发和快速回放的方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102360310B (zh) * 2011-09-28 2014-03-26 中国电子科技集团公司第二十八研究所 一种分布式系统环境下的多任务进程监视方法
CN103929427A (zh) * 2014-04-23 2014-07-16 无锡天脉聚源传媒科技有限公司 一种动态多线程下载装置及其下载方法
CN104506950A (zh) * 2014-12-29 2015-04-08 珠海全志科技股份有限公司 网络流媒体播放中的多线程下载方法、装置及下载设备
CN106201443B (zh) * 2016-07-27 2019-01-18 福建富士通信息软件有限公司 一种基于Storm流式计算框架多并发写文件的方法及系统
CN107729139B (zh) * 2017-09-18 2021-02-26 北京京东尚科信息技术有限公司 一种并发获取资源的方法和装置
WO2019126720A1 (en) * 2017-12-21 2019-06-27 Fractal Industries, Inc. A system and method for optimization and load balancing of computer clusters
CN110910916B (zh) * 2019-11-29 2021-08-03 四川效率源信息安全技术股份有限公司 一种基于文件结构的监控视频的雕复方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102868939A (zh) * 2012-09-10 2013-01-09 杭州电子科技大学 一种实时视频监控系统中音视频数据的同步方法
US9450700B1 (en) * 2013-08-05 2016-09-20 Amazon Technologies, Inc. Efficient network fleet monitoring
CN103412786A (zh) * 2013-08-29 2013-11-27 苏州科达科技股份有限公司 一种高性能服务器架构系统及数据处理方法
CN103647935A (zh) * 2013-11-19 2014-03-19 长沙中联重科环卫机械有限公司 视频数据存储方法及视频监控装置
CN108922188A (zh) * 2018-07-24 2018-11-30 河北德冠隆电子科技有限公司 雷达跟踪定位的四维实景交通路况感知预警监控管理系统
CN109348176A (zh) * 2018-10-26 2019-02-15 上海电气风电集团有限公司 集成有视频系统的风力发电机组监控与数据采集系统
CN109492024A (zh) * 2018-10-26 2019-03-19 平安科技(深圳)有限公司 数据处理方法、装置、计算机设备以及存储介质
CN111163297A (zh) * 2020-02-10 2020-05-15 迈享科技(深圳)有限公司 一种实现视频监控云存储高并发和快速回放的方法

Also Published As

Publication number Publication date
CN111757145A (zh) 2020-10-09

Similar Documents

Publication Publication Date Title
US5664226A (en) System for merging plurality of atomic data elements into single synchronized file by assigning ouput rate to each channel in response to presentation time duration
US20210134329A1 (en) System and method for event data collection and video alignment
CN102314488B (zh) 针对特定的人口统计和使用率分布从网络服务器数据获取匿名观众测量数据的方法和装置
CN111757145B (zh) 一种多路负载均衡的监控视频的批量处理方法
CN104488282B (zh) 接收装置、接收方法、发送装置和发送方法
US9794627B2 (en) System and method of content acquisition and delivery
CA2155354C (en) Digital media data stream network management system
KR101249169B1 (ko) 개인용 비디오 레코더와 휴대용 가입자 장치 사이에 가입자 레코딩 멀티미디어 콘텐츠를 동기화하는 시스템, 컴퓨터 판독가능 매체 및 이를 수행하는 방법
US20020023270A1 (en) Three part architecture for digital television data broadcasting
US20120198335A1 (en) Apparatus and method for automatic realtime cloud computing processing for live multimedia content
US20030005465A1 (en) Method and apparatus to send feedback from clients to a server in a content distribution broadcast system
US8594481B2 (en) Managing synchronization of media programs to portable devices
WO2011146898A2 (en) Internet system for ultra high video quality
US10939167B2 (en) Dynamic resource allocation of multimedia content based on usage patterns
CN112135169B (zh) 一种媒体内容加载方法、装置、设备和介质
EP2243272A1 (en) Providing remote access to segments of a transmitted program
US20210368225A1 (en) Method and system for setting video cover
CN112565717B (zh) 视频结构化方法、相关设备、系统及存储介质
CN109600665B (zh) 用于处理数据的方法和装置
US8179789B2 (en) System and method for timestamps for media stream data
JP2009038420A (ja) コンテンツ評価ソフトウェア及びサービス提供システム
CN113938640A (zh) 分布式监视系统中的摄像头的选择性使用
CN108769754B (zh) 一种基于视频回放终端的视频回放方法和系统
CN108259998A (zh) 播放器及播放控制方法、装置、电子设备及播放系统
EP2596628A1 (fr) Procédé de planification des enregistrements de programmes de télévision pour un utilisateur

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