一种视频数据高性能分发方法与流程
未命名
09-18
阅读:108
评论:0

1.本发明涉及视频数据分发领域,更具体地,涉及一种视频数据高性能分发方法。
背景技术:
2.视频监控平台中的视频播放功能,转码服务在多线程模型下分发视频数据到浏览器播放。如果用一个线程循环将数据包分发到大量的浏览器则会造成单线程转发性能瓶颈。如果每个浏览器对应一个分发线程则数据分发的时候会有大量的线程切换,线程切换次数大多,将严重影响服务器性能。
3.现在假设一个场景:一个摄像头比较重要,假设有同时1w个用户正在观看这个摄像头视频,那么在分发一个数据包时是否需要最多进行1w次线程切换然后再发送数据?这样频繁的线程切换也是扛不住的。因此,减少多个线程之间的频繁切换对于视频流畅播放是很重要的。
技术实现要素:
4.本发明针对现有技术中存在的技术问题,提供一种视频数据高性能分发方法,包括:
5.将多个线程布置在转码服务器的多个cpu核上;
6.根据多个用户客户端的视频播放请求,将所述多个用户客户端的视频播放请求分配到所述转码服务器的多个线程上,以使每一个线程根据分配的用户客户端的视频播放请求,将相机传送的视频分发到对应的客户端浏览器。
7.在上述技术方案的基础上,本发明还可以作出如下改进。
8.可选的,所述将多个线程布置在转码服务器的多个cpu核上,包括:
9.在每一个cpu核上布置一个或多个线程。
10.可选的,将所述多个用户客户端的视频播放请求分配到所述转码服务器的多个线程上,包括:
11.将所述多个用户客户端的视频播放请求平均分配到所述转码服务器的多个线程上;
12.或者,根据所述转码服务器的每一个cpu核的使用率,将所述多个用户客户端的视频播放请求平均分配到所述转码服务器的多个线程上。
13.可选的,所述根据所述转码服务器的每一个cpu核的使用率,将所述多个用户客户端的视频播放请求平均分配到所述转码服务器的多个线程上,包括:
14.定时获取一次所述转码服务器上的每一个cpu核的使用率,当接收到用户客户端的视频播放请求时,优先将所述用户客户端的视频播放请求分配给使用率低的cpu核中的线程。
15.可选的,还包括:
16.定期循环获取每一个cpu核的使用率,当连续检测到所有cpu核的使用率中最大使
用率比最小使用率大10%时,将最大线程上的用户客户端的视频播放请求数量分配5%到使用率最小的线程上。
17.可选的,所述根据多个用户客户端的视频播放请求,将所述多个用户客户端的视频播放请求分配到所述转码服务器的多个线程上,之前还包括:
18.根据采样获取所有用户客户端历史播放视频数量,并取播放视频数量的中位数m;
19.根据每一个用户客户端历史播放视频的操作习惯,预测出所有用户客户端的视频播放数量s;
20.基于中位数m和视频播放数量s,计算出预测的将要播放的视频数量e;
21.根据预测的将要播放的视频数量e,转码服务器提前开启线程,并提前预加载视频流。
22.可选的,根据采样获取所有用户客户端历史播放视频数量,并取播放视频数量的中位数m,包括:
23.基于多个采样点采集每周在相同时间段,所有用户客户端的视频播放数量,计算多个采样点采样得到的视频播放数量的中位数m。
24.可选的,所述根据每一个用户客户端历史播放视频的操作习惯,预测出所有用户客户端的视频播放数量s,包括:
25.记录每一个用户客户端的登录方式,以及在每一种登录方式下,每一个用户客户端播放视频对应的相机id;
26.根据每一个用户客户端播放视频对应的相机id,统计每一个用户客户端播放视频的n路相机,即播放视频数量;
27.获取当前登录的用户客户端数量,根据每一个用户客户端的播放视频数量n,计算出所有用户客户端的视频播放数量s。
28.可选的,所述基于中位数m和视频播放数量s,计算出预测的将要播放的视频数量e,包括:
29.计算中位数m和视频播放数量s的平均值e=(m+s)/2。
30.可选的,还包括:
31.统计每一种登录方式下,每一个用户客户端点击播放次数最多的3个相机,作为用户客户端的热点相机;
32.在用户客户端未点播时,预先为用户客户端分配对应的线程,并将热点相机的视频流请求过来;
33.待用户客户端点播,直接发送给用户客户端;若用户客户端不点播的时间超过设定时间,则关闭请求的视频流。
34.本发明提供的一种视频数据高性能分发方法,将所有的线程布置在转码服务器的多个cpu核上,多个cpu核可并行处理,这样将减少线程切换次数,同时又能使用多线程来分发数据,极大提高网络吞吐量。
附图说明
35.图1为视频流传输流程示意图;
36.图2为本发明提供的一种视频数据高性能分发方法的流程图;
37.图3为转码服务器分发数据的示意图。
具体实施方式
38.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。另外,本发明提供的各个实施例或单个实施例中的技术特征可以相互任意结合,以形成可行的技术方案,这种结合不受步骤先后次序和/或结构组成模式的约束,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时,应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
39.参见图1,整个视频平台视频数据流向示意图,用户通过浏览器播放相机视频,数据流向,包括:相机发送rtp(real-time transport protocol,实时传输协议)数据到流媒体服务器,流媒体服务器发送rtp数据到转码服务器,转码服务器处理视频数据后生成fmp4数据,转码服务器发送fmp4数据到浏览器播放。
40.图2为本发明提供的一种视频数据高性能分发方法流程图,如图2所示,方法包括:
41.步骤1,将多个线程布置在转码服务器的多个cpu核上。
42.作为实施例,所述将多个线程布置在转码服务器的多个cpu核上,包括:在每一个cpu核上布置一个或多个线程。
43.可理解的是,转码服务器上有多个cpu核,在cpu核上布置多个线程,其中,布置的方式为一个cpu核上可布置一个线程,也可以一个cpu核上布置多个线程。其中,多个cpu核上的线程可并行进行数据处理,同一个cpu核上的多个线程只能轮循切换运行。
44.步骤2,根据多个用户客户端的视频播放请求,将所述多个用户客户端的视频播放请求分配到所述转码服务器的多个线程上,以使每一个线程根据分配的用户客户端的视频播放请求,将相机传送的视频分发到对应的客户端浏览器。
45.作为实施例,将所述多个用户客户端的视频播放请求分配到所述转码服务器的多个线程上,包括:将所述多个用户客户端的视频播放请求平均分配到所述转码服务器的多个线程上;或者,根据所述转码服务器的每一个cpu核的使用率,将所述多个用户客户端的视频播放请求平均分配到所述转码服务器的多个线程上。
46.可参见图3,假如转码服务器有32核cpu(也可以有其他核数),用户客户端数量少的时候,一个线程分发50个用户客户端的视频数据,支持32个线程同时分发,也就是同时支持50*32个用户同时播放视频。
47.当用户客户端数量再增加的时候就需要再增加线程,这个时候就会造成线程频繁切换。本发明中,不再增加线程数量,而是将32个线程绑定到32个cpu核上,减少线程切换,新增用户播放请求平均分配到这32个线程中。当转码服务器不部署其他服务时,32个cpu核可同时运行,32个线程并行分发数据就没有线程的切换,减少cpu使用率。
48.需要说明的是,平均分配用户客户端的视频播放请求,存在一些不足之处:
49.不足之处一:1w个用户播放的视频不是同一路视频,不同的视频帧率和码率是不同的所以用户平均分配到32个核上也会产生有的cpu核使用率很高有的cpu核使用率很低
的情况。
50.不足之处二:1w个用户播放视频肯定会有用户播放停止的情况,按照上面的分配步骤分配完成之后,部分用户停止播放,就会产生某些cpu核上用户播放数量高然后cpu使用率高,有的用户播放数量少cpu使用率少。
51.不足之处三:如果该服务器同时运行其他程序,其他程序运行也会占用某个cpu核的使用率,可能会导致某个核使用率偏高,某个cpu核使用率偏低的情况。
52.某个cpu核使用率100%后会导致这个核上的线程卡住所有用户都播放视频卡顿中断。
53.为解决以上的不足之处,本发明提出了改进方案,根据转码服务器的每一个cpu核的使用率为用户客户端的视频播放请求动态分配线程。
54.作为实施例,所述根据所述转码服务器的每一个cpu核的使用率,将所述多个用户客户端的视频播放请求平均分配到所述转码服务器的多个线程上,包括:定时获取一次所述转码服务器上的每一个cpu核的使用率,当接收到用户客户端的视频播放请求时,优先将所述用户客户端的视频播放请求分配给使用率低的cpu核中的线程。
55.其中,定期循环获取每一个cpu核的使用率,当连续检测到所有cpu核的使用率中最大使用率比最小使用率大10%时,将最大线程上的用户客户端的视频播放请求数量分配5%到使用率最小的线程上。
56.可理解的是,在绑定的线程中加获取cpu核使用率的功能,定时获取转码服务器中每一个cpu核的使用率。若有多个用户客户端来点播视频的时候不是将用户平均分配到这些线程中,而是将用户优先分配给cpu核使用率较低的线程。
57.循环定时2s获取一次cpu核使用率,超过3次所有cpu核中最大使用率比最小使用率则的大10%,则将使用率最大的线程上的用户客户端的视频播放请求数量分配5%到使用率最小的线程上面,实现动态分配用户客户端的视频播放请求,从而使每个cpu核的使用率相对稳定。
58.作为实施例,所述根据多个用户客户端的视频播放请求,将所述多个用户客户端的视频播放请求分配到所述转码服务器的多个线程上,之前还包括:根据采样获取所有用户客户端历史播放视频数量,并取播放视频数量的中位数m;根据每一个用户客户端历史播放视频的操作习惯,预测出所有用户客户端的视频播放数量s;基于中位数m和视频播放数量s,计算出预测的将要播放的视频数量e;根据预测的将要播放的视频数量e,转码服务器提前开启线程,并提前预加载视频流。
59.可理解的是,根据用户客户端登录播放时间、用户客户端使用电脑浏览器/手机客户端(蜂窝数据连接/wifi连接),热点相机3个因素学习预先动态分配线程以及预先加载视频流。
60.其中,根据采样获取所有用户客户端历史播放视频数量,并取播放视频数量的中位数m,包括:基于多个采样点采集每周在相同时间段,所有用户客户端的视频播放数量,计算多个采样点采样得到的视频播放数量的中位数m。
61.可理解的是,记录每个用户客户端登录播放视频时间保存在数据库中,比如早上9点上报时间,用户客户端会集中登录点播视频并发量会很高,根据前一个月的访问情况预测今天早上9点会有多少用户客户端登录且播放视频数量,根据前几个星期比如同样是周
一算出这个周一9点的中位数作为参数m。每半个小时一个采样点这样每周有7*24*2个采样点,获取每个采样点播放视频数量作为采样值。在采样点前5分钟获取前面10周这个采样点播放视频数量计算出播放数量的中位数m。
62.作为实施例,所述根据每一个用户客户端历史播放视频的操作习惯,预测出所有用户客户端的视频播放数量s,包括:记录每一个用户客户端的登录方式,以及在每一种登录方式下,每一个用户客户端播放视频对应的相机id;根据每一个用户客户端播放视频对应的相机id,统计每一个用户客户端播放视频的n路相机,即播放视频数量;获取当前登录的用户客户端数量,根据每一个用户客户端的播放视频数量n,计算出所有用户客户端的视频播放数量s。
63.可理解的是,当用户客户端点击播放视频时,统计用户客户端登录方式,其中,用户客户端登录方式包括电脑客户端浏览器登录、手机客户端登录网络蜂窝网络/wifi,用户通过电脑浏览器登录和手机客户端登录网络wifi的时候播放视频的概率很大,手机客户端登录网络是蜂窝网络点播的概率会小一些默认,记录每个用户的操作习惯,每个登录模式下,每个用户客户端播放的视频对应的相机id,每一个用户客户端会同时播放n路相机,即视频播放数量为n。
64.统计当前登录的用户客户端数量count,同时播放视频的数量为所有用户客户端的视频播放数量之和s=(n1+n2+n3+...+ncount)。
65.基于中位数m和视频播放数量s,计算出预测的将要播放的视频数量e,包括:计算中位数m和视频播放数量s的平均值e=(m+s)/2。
66.根据预测的将要播放的视频数量e,转码服务器根据预测值知道将要播放多少路视频流提前开启线程,每个线程默认50路视频流。这样每半个小时预测一次,然后将预测值发送到转码服务,转码服务提前开启线程。
67.作为实施例,还包括:统计每一种登录方式下,每一个用户客户端点击播放次数最多的3个相机,作为用户客户端的热点相机;在用户客户端未点播时,预先为用户客户端分配对应的线程,并将热点相机的视频流请求过来;待用户客户端点播,直接发送给用户客户端;若用户客户端不点播的时间超过设定时间,则关闭请求的视频流。
68.可理解的是,在记录用户客户端播放视频的操作习惯时,记录每一个用户客户端每次点播哪一路视频,然后统计每个用户客户端点播每个相机视频的次数,为每个用户客户端建立一个热点相机表,且记录用户客户端登录方式(用户登录方式包括电脑客户端浏览器登录,手机客户端登录网络蜂窝网络/wifi),记录用户客户端在点击视频播放时的操作习惯。
69.当有用户客户端登录的情况下先判断用户客户端登录方式,在此登录方式下点播次数最多的3个相机为此用户客户端的热点相机,在用户客户端未点播的情况下,先将线程分配好并且将视频流请求过来,不发送到用户客户端,等待用户客户端点播就直接发给用户客户端,加快打开视频画面的速度(正常请求打开画面3s,预加载的方式打开画面1s)提升客户体验。用户客户端一直不点播该视频流超时10分钟关闭视频流。
70.本发明提供一种视频数据高性能分发方法,具有以下优点:
71.(1)针对安防视频平台浏览器播放视频,转码服务器分发视频流数据到浏览器,在用户数量超过设定值(cpu核数*50)时,通过将同等核数的线程绑定到cpu核上减少线程频
繁切换,提升服务性能。
72.(2)动态分配解决某个cpu核的使用率过高,其他cpu核使用率很低的情况,让所有的cpu核中最大使用率和最小使用率的差值不超过10%,程序运行稳定性会大大提升。
73.(3)在此分配线程的基础上另外根据用户客户端登录播放时间,用户使用电脑浏览器/手机客户端(蜂窝数据连接/wifi连接),热点相机3个因素学习预先动态分配线程以及预先加载视频流功能。
74.(4)将所有的线程布置在转码服务器的多个cpu核上,多个cpu核可并行处理,这样将减少线程切换次数,同时又能使用多线程来分发数据,极大提高网络吞吐量。
75.需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
76.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
77.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
78.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
79.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
80.尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
81.显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
技术特征:
1.一种视频数据高性能分发方法,其特征在于,包括:将多个线程布置在转码服务器的多个cpu核上;根据多个用户客户端的视频播放请求,将所述多个用户客户端的视频播放请求分配到所述转码服务器的多个线程上,以使每一个线程根据分配的用户客户端的视频播放请求,将相机传送的视频分发到对应的客户端浏览器。2.根据权利要求1所述的视频数据高性能分发方法,其特征在于,所述将多个线程布置在转码服务器的多个cpu核上,包括:在每一个cpu核上布置一个或多个线程。3.根据权利要求1所述的视频数据高性能分发方法,其特征在于,将所述多个用户客户端的视频播放请求分配到所述转码服务器的多个线程上,包括:将所述多个用户客户端的视频播放请求平均分配到所述转码服务器的多个线程上;或者,根据所述转码服务器的每一个cpu核的使用率,将所述多个用户客户端的视频播放请求平均分配到所述转码服务器的多个线程上。4.根据权利要求3所述的视频数据高性能分发方法,其特征在于,根据所述转码服务器的每一个cpu核的使用率,将所述多个用户客户端的视频播放请求平均分配到所述转码服务器的多个线程上,包括:定时获取一次所述转码服务器上的每一个cpu核的使用率,当接收到用户客户端的视频播放请求时,优先将所述用户客户端的视频播放请求分配给使用率低的cpu核中的线程。5.根据权利要求4所述的视频数据高性能分发方法,其特征在于,还包括:定期循环获取每一个cpu核的使用率,当连续检测到所有cpu核的使用率中最大使用率比最小使用率大10%时,将最大线程上的用户客户端的视频播放请求数量分配5%到使用率最小的线程上。6.根据权利要求1所述的视频数据高性能分发方法,其特征在于,所述根据多个用户客户端的视频播放请求,将所述多个用户客户端的视频播放请求分配到所述转码服务器的多个线程上,之前还包括:根据采样获取所有用户客户端历史播放视频数量,并取播放视频数量的中位数m;根据每一个用户客户端历史播放视频的操作习惯,预测出所有用户客户端的视频播放数量s;基于中位数m和视频播放数量s,计算出预测的将要播放的视频数量e;根据预测的将要播放的视频数量e,转码服务器提前开启线程,并提前预加载视频流。7.根据权利要求6所述的视频数据高性能分发方法,其特征在于,根据采样获取所有用户客户端历史播放视频数量,并取播放视频数量的中位数m,包括:基于多个采样点采集每周在相同时间段,所有用户客户端的视频播放数量,计算多个采样点采样得到的视频播放数量的中位数m。8.根据权利要求6所述的视频数据高性能分发方法,其特征在于,所述根据每一个用户客户端历史播放视频的操作习惯,预测出所有用户客户端的视频播放数量s,包括:记录每一个用户客户端的登录方式,以及在每一种登录方式下,每一个用户客户端播放视频对应的相机id;根据每一个用户客户端播放视频对应的相机id,统计每一个用户客户端播放视频的n
路相机,即播放视频数量,n为正整数;获取当前登录的用户客户端数量,根据每一个用户客户端的播放视频数量n,计算出所有用户客户端的视频播放数量s。9.根据权利要求6所述的视频数据高性能分发方法,其特征在于,所述基于中位数m和视频播放数量s,计算出预测的将要播放的视频数量e,包括:计算中位数m和视频播放数量s的平均值e=(m+s)/2。10.根据权利要求8所述的视频数据高性能分发方法,其特征在于,还包括:统计每一种登录方式下,每一个用户客户端点击播放次数最多的3个相机,作为用户客户端的热点相机;在用户客户端未点播时,预先为用户客户端分配对应的线程,并将热点相机的视频流请求过来;待用户客户端点播,直接发送给用户客户端;若用户客户端不点播的时间超过设定时间,则关闭请求的视频流。
技术总结
本发明提供一种视频数据高性能分发方法,包括将多个线程布置在转码服务器的多个cpu核上;根据多个用户客户端的视频播放请求,将多个用户客户端的视频播放请求分配到转码服务器的多个线程上,以使每一个线程根据分配的用户客户端的视频播放请求,将相机传送的视频分发到对应的客户端浏览器。本发明将所有的线程布置在转码服务器的多个cpu核上,多个cpu核中的线程可并行向多个客户端浏览器分发视频数据,这样将减少线程切换次数,同时又能使用多线程来分发数据,极大提高网络吞吐量。极大提高网络吞吐量。极大提高网络吞吐量。
技术研发人员:吴军 李文娟 邹翊垄 范瑞 吕娇
受保护的技术使用者:武汉中科通达高新技术股份有限公司
技术研发日:2023.06.29
技术公布日:2023/9/14
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/