发明内容
有鉴于此,实有必要提供一种同屏的多个视频切换的控制方法,致使同屏播放多个视频的播放软件执行某种操作时,CPU占用处于合理范围,以致设备的软件或操作系统不易崩溃。
一种同屏的多个视频切换的控制方法,其包括如下步骤:
步骤S1,同屏播放n个当前播放视频,并记录每一个当前播放视频的资源占用参数于数据库中,资源占用参数包括媒体参数。
步骤S2,接收n个待播放视频切换n个当前播放视频的切换请求。
步骤S3,获取得到的CPU当前可被使用的稳定性资源量为Xcan。
步骤S4,从数据库中查询得到与第i个当前播放视频的媒体参数一致的m个已有资源占用参数,其中,1≤i≤n,1≤m。
步骤S5,m个已有资源占用参数按照第一预设规则计算得到的第i个当前播放视频的第一预测资源占用为XPre(i),以及m个已有资源占用参数按照第二预设规则计算得到的第一预测时间为TPre(i)。
步骤S6,Xcan、第i个当前播放视频的XPre(i)和TPre(i)、第i-1个当前播放视频的XPre(i-1)和TPre(i-1)按照第三预设规则计算得到的所需延时时长为Tdelay(i)。
步骤S7,所需延时时长Tdelay(i)后,暂停播放第i个当前播放视频,开始播放第i个待播放视频。
步骤S8,判断i是否等于n。
步骤S9,若i不等于n,i=i+1,执行步骤S3~S8。
优选地,第j个已有资源占用参数还包括资源占用Xj和权重Wj,第一预设规则包括:其中,1≤j≤m。
优选地,第j个已有资源占用参数还包括申请资源所需时间Tj;第二预设规则包括:其中,1≤j≤m。
优选地,第三预设规则包括:其中,1≤i≤n,XPre(0)=0,TPre(0)=0。
优选地,步骤S3,包括:
步骤S31,获取得到播放软件开启期间L次的CPU占用增高的峰值,第k次CPU占用增高的峰值为Xtop(k),以及第k次CPU占用增高的峰值后返回的稳定值为Xstablen(k),其中,1≤k≤L。
步骤S32,获取CPU的资源总量为Xtotal。
步骤S33,获取CPU的已用资源量为Xusing。
步骤S34,所有的Xtop(k)和Xstablen(k)、Xtotal、Xusing按照第四预设规则计算得到稳定性资源量Xcan。
优选地,第四预设规则包括:
优选地,步骤S7,包括:
步骤S71,获取第i个当前播放视频的虚拟暂停点,从虚拟暂停点开始,暂停从第i个当前播放视频的第一视频输入源接收数据,并记录虚拟暂停点的第一播放参数。
步骤S72,获取第i个待播放视频的虚拟播放点,从虚拟播放点开始,开始从第i个待播放视频的第二视频输入源接收数据,并记录虚拟播放点的第二播放参数。
步骤S73,将播放第i个当前播放视频的播放窗口的第一播放参数修改为第二播放参数,以致所需延时时长Tdelay(i)后,暂停播放第i个当前播放视频,开始播放第i个待播放视频。
优选地,步骤S71,包括:
步骤S711,获取第i个当前播放视频下一个的第一关键帧位置,第一关键帧位置为虚拟暂停点。
步骤S712,从虚拟暂停点开始,暂停从第i个当前播放视频的第一视频输入源接收数据。
步骤S713,记录第i个当前播放视频的第一播放参数,第一播放参数包括当前内存地址、当前分辨率、当前码率以及当前缓冲区大小。
优选地,步骤S713之后,包括:
步骤S721,为第i个待播放视频申请新的内存地址。
步骤S722,利用新的内存地址构建新的缓冲区。
步骤S723,获取第i个待播放视频下一个的第二关键帧位置,第二关键帧位置为虚拟播放点。
步骤S724,从虚拟播放点开始,开始从第i个待播放视频的第二视频输入源接收数据,并将其存储至新的缓冲区中。
步骤S725,记录第i个待播放视频的第二播放参数,第二播放参数包括新的内存地址、新的分辨率、新的码率和新的缓冲区大小。
优选地,步骤S725之后,包括:
步骤S731,将当前内存地址修改为新的内存地址,将当前分辨率修改为新的分辨率,以及将当前码率修改为新的码率。
步骤S732,将当前缓冲区大小修改为新的缓冲区大小。
步骤S733,将第一视频输入源修改为第二视频输入源。
步骤S734,判断是否超过所需延时时长Tdelay(i)。
步骤S735,若超过所需延时时长Tdelay(i),从第二视频输入源接收到的数据存储至新的缓冲区中,并渲染新的缓冲区中的数据,以致播放第i个待播放视频。
本发明通过与当前播放视频的媒体参数一致的已播放视频的资源占用参数得到预测资源占用和预测时间,并根据该预测资源、预测时间和稳定性资源量计算得到延时时间。通过为该操作添加延时时间,致使CPU有充分的缓冲时间处理该操作,以致解决了执行某种操作时,CPU占用暴涨的问题。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用来限定本发明。
图1展示了本发明同屏的多个视频切换的控制方法的一种实施例。在本实施例中,该同屏的多个视频切换的控制方法,包括如下步骤:
步骤S1,同屏播放n个当前播放视频,并记录每一个当前播放视频的资源占用参数于数据库中,资源占用参数包括媒体参数。
其中,第i个当前播放视频的资源占用参数包括资源占用Xi、权重Wi、媒体参数Pi和申请资源所需时间Ti,将n个当前播放视频的资源占用参数存储至数据库中,1≤i≤n,此外,数据库用于存储已播放视频的资源占用参数。
步骤S2,接收n个待播放视频切换n个当前播放视频的切换请求。该切换请求为以轮询方式切换n个当前播放视频。
步骤S3,获取得到的CPU当前可被使用的稳定性资源量为Xcan。
步骤S4,从数据库中查询得到与第i个当前播放视频的媒体参数一致的m个已有资源占用参数,其中,1≤i≤n,1≤m。
其中,该已有资源占用参数为已播放视频的资源占用参数。
步骤S5,m个已有资源占用参数按照第一预设规则计算得到的第i个当前播放视频的第一预测资源占用为XPre(i),以及m个已有资源占用参数按照第二预设规则计算得到的第一预测时间为TPre(i)。
步骤S6,Xcan、第i个当前播放视频的XPre(i)和TPre(i)、第i-1个当前播放视频的XPre(i-1)和TPre(i-1)按照第三预设规则计算得到的所需延时时长为Tdelay(i)。
步骤S7,所需延时时长Tdelay(i)后,暂停播放第i个当前播放视频,开始播放第i个待播放视频。
步骤S8,判断i是否等于n。若i等于n,则执行结束。若i不等于n,则执行步骤S9。
步骤S9,若i不等于n,i=i+1,执行步骤S3~S8。
本实施例通过与当前播放视频的媒体参数一致的已播放视频的资源占用参数得到预测资源占用和预测时间,并根据该预测资源占用、预测时间和稳定性资源量计算得到延时时间。通过为该操作添加延时时间,致使CPU有充分的缓冲时间处理该操作,以致执行该操作(多个待播放视频切换多个当前播放视频)时,CPU占用不会出现暴涨的现象。
在某些实施例中,例如本实施例,第j个已有资源占用参数还包括资源占用Xj和权重Wj。第一预设规则包括:其中,1≤j≤m。
本实施例通过已播视频的多个已有资源占用参数计算第i个当前播放视频的预测资源占用,以供后面计算得到的延时时间更加精准。
在某些实施例中,例如本实施例,第j个已有资源占用参数还包括申请资源所需时间Tj。第二预设规则包括:其中,1≤j≤m。
本实施例通过已播视频的多个已有资源占用参数计算第i个当前播放视频的释放内存资源所需的预测时间,以致该预测时间更加符合实际需求,既不会出现时间过长,CPU反应速度慢,也不会出现时间过短,以致仍会出现CPU占用暴涨的问题。
在某些实施例中,例如本实施例,第三预设规则包括:其中,1≤i≤n,XPre(0)=0,TPre(0)=0。
本实施例通过预测资源占用、预测时间、稳定性资源量计算得到的延时时间比较精准,既保证CPU的响应速度,也保证CPU占用不会出现暴涨的问题。此外,本实施例将前一个当前播放视频的预测资源占用和预测时间作为因素考虑到延时时间的计算中,以致计算得到的延时时间更加精准。
图2展示了图1中获取CPU当前可被使用的稳定性资源量的一种实施例。在本实施例,步骤S3,包括:
步骤S31,获取得到播放软件开启期间L次的CPU占用增高的峰值,第k次CPU占用增高的峰值为Xtop(k),以及第k次CPU占用增高的峰值后返回的稳定值为Xstablen(k),其中,1≤k≤L。
其中,播放软件为同屏输出多个视频的软件。
步骤S32,获取CPU的资源总量为Xtotal。
步骤S33,获取CPU的已用资源量为Xusing。
步骤S34,所有的Xtop(k)和Xstablen(k)、Xtotal、Xusing按照第四预设规则计算得到稳定性资源量Xcan。
本实施例通过将播放软件开启期间的CPU占用增高的峰值,以及CPU占用增高的峰值后返回的稳定值考虑在计算稳定性资源量的因素中,以致计算得到的稳定性资源量更加精准。
在某些实施例中,例如本实施例,第四预设规则包括:
图3展示了图1中暂停播放第i个当前播放视频,开始播放第i个待播放视频的一种实施例。在本实施例,步骤S7,包括:
步骤S71,获取第i个当前播放视频的虚拟暂停点,从虚拟暂停点开始,暂停从第i个当前播放视频的第一视频输入源接收数据,并记录虚拟暂停点的第一播放参数。
步骤S72,获取第i个待播放视频的虚拟播放点,从虚拟播放点开始,开始从第i个待播放视频的第二视频输入源接收数据,并记录虚拟播放点的第二播放参数。
步骤S73,将播放第i个当前播放视频的播放窗口的第一播放参数修改第二播放参数,以致所需延时时长Tdelay(i)后,暂停播放第i个当前播放视频,开始播放第i个待播放视频。
本实施例设置当前播放视频的虚拟暂停点,以致当前播放视频后续可以从该点继续播放。此外,本实施例通过记录当前播放视频的第一播放参数,以及记录待播放视频的第二播放参数,通过将第一播放参数修改为第二播放参数,以致暂停播放第i个当前播放视频,开始播放第i个待播放视频。
图4展示了图3中获取第i个当前播放视频的虚拟暂停点和第一播放参数的一种实施例。在本实施例中,步骤S71,包括:
步骤S711,获取第i个当前播放视频下一个的第一关键帧位置,第一关键帧位置为虚拟暂停点。
步骤S712,从虚拟暂停点开始,暂停从第i个当前播放视频的第一视频输入源接收数据。
步骤S713,记录第i个当前播放视频的第一播放参数,第一播放参数包括当前内存地址、当前分辨率、当前码率以及当前缓冲区大小。
本实施例通过将关键帧位置设置为虚拟暂停点,以致后续从该虚拟暂停点继续播放当前播放视频。此外,本实施例通过记录当前播放视频的播放参数,以便后续进行待播放视频与当前播放视频的切换。
图5展示了图3中获取第i个待播放视频的虚拟播放点和第二播放参数的一种实施例。在本实施例中,步骤S72,包括:
步骤S721,为第i个待播放视频申请新的内存地址。
步骤S722,利用新的内存地址构建新的缓冲区。
步骤S723,获取第i个待播放视频下一个的第二关键帧位置,第二关键帧位置为虚拟播放点。
步骤S724,从虚拟播放点开始,开始从第i个待播放视频的第二视频输入源接收数据,并将其存储至新的缓冲区中。
步骤S725,记录第i个待播放视频的第二播放参数,第二播放参数包括新的内存地址、新的分辨率、新的码率和新的缓冲区大小。
本实施例通过将关键帧位置设置为虚拟播放点,以及记录该待播放视频的播放参数,为待播放视频切换当前播放视频做好准备。
图6展示了图3中修改播放第i个当前播放视频的播放窗口的播放参数,以致播放待播放视频的一种实施例的流程示意图。在本实施例中,步骤S73,包括:
步骤S731,将当前内存地址修改为新的内存地址,将当前分辨率修改为新的分辨率,以及将当前码率修改为新的码率。
步骤S732,将当前缓冲区大小修改为新的缓冲区大小。
步骤S733,将第一视频输入源修改为第二视频输入源。
步骤S734,判断是否超过所需延时时长Tdelay(i)。若未超过所需延时时长Tdelay(i),间隔预设时间后,继续执行步骤S734。若超过所需延时时长,执行步骤S735。
步骤S735,若超过所需延时时长Tdelay(i),从第二视频输入源接收到的数据存储至新的缓冲区中,并渲染新的缓冲区中的数据,以致播放第i个待播放视频。
本实施例利用待播放视频的播放参数修改当前播放视频的播放参数,以致暂停播放当前播放视频,开始播放待播放视频。
以上对发明的具体实施方式进行了详细说明,但其只作为范例,本发明并不限制与以上描述的具体实施方式。对于本领域的技术人员而言,任何对该发明进行的等同修改或替代也都在本发明的范畴之中,因此,在不脱离本发明的精神和原则范围下所作的均等变换和修改、改进等,都应涵盖在本发明的范围内。