视频直播处理方法及装置与流程

文档序号:12498538阅读:153来源:国知局
视频直播处理方法及装置与流程

本发明涉及视频直播技术领域,尤其涉及视频直播处理方法及装置。



背景技术:

视频直播过程中,常用的流媒体协议主要有HTTP(HyperText Transfer Protocol,超文本传输协议)渐进下载和基于RTSP(Real Time Streaming Protocol,实时流传输协议)/RTP(Real-time Transport Protocol,实时传输协议)的实时流媒体协议,这两种协议的原理是完全不同的,目前比较方便且在公网上适用是HTTP渐进下载方法,就此Apple公司的HTTP Live Streaming(下文简称为HLS)动态码率自适应技术,是这方面的代表。它最初是苹果公司针对iPhone、iPod、iTouch和iPad等移动设备而开发的流,目前在桌面也有很多应用,例如HTML5就可以直接支持该技术。

最原始的HLS协议的实现是基于小切片方式,会在硬盘生成大量的TS(Time-sharing System,分时操作系统)文件,存储或读取这些文件会产生大量的I/O(输入输出)操作,受限于I/O性能,直播过程的灵敏度会降低,影响请求速度。但是原始HLS的优点就是可以实现大并发量,不受限于内存的大小,在服务器发展初期,内存不是特别充足的情况下,这种方式的适用性还是很好的。因此,原始的HLS协议对存储I/O要求比较苛刻。称这种存储于磁盘的HLS直播叫落地直播,落地直播的缺陷就是对I/O的严重依赖,影响视频质量。

目前最新的内存缓存数据实时切片技术,使得单台服务器的切片与打包能力不再是瓶颈。该技术不将TS切片文件存到磁盘,而是存在内存当中,极大减少了磁盘的I/O次数,延长了服务器磁盘的使用寿命。由于客户端请求数据时直接从服务器的内存中获取,极大提高了对客户端数据请求的反应速度,优化了用户观看直播的体验。缺点是对内存的要求非常高,并发量和吞吐量受到了极大的限制。称这种存储于内存的HLS直播叫内存直播。内存直播的缺陷就是对内存的强烈依赖,导致并发量无法得到保证。

而如何既要保证视频的质量又要保证视频路数的并发量,现有技术中并未给出有效的解决方案。



技术实现要素:

本发明实施例提供一种视频直播处理方法,用以在保证视频质量的同时保证视频路数的并发量,该方法包括:

在启动视频直播后,启动调度线程、检测线程和切换线程;所述检测线程用于检测视频直播服务器中I/O使用率、可用内存及每一路视频流的并发量;所述调度线程用于根据所述检测线程的检测数据,对视频直播频道的调度队列进行调度;所述切换线程用于根据所述调度线程的调度结果,对直播类型进行切换。

本发明实施例还提供一种视频直播处理装置,用以在保证视频质量的同时保证视频路数的并发量,该装置包括:

检测模块,用于检测视频直播服务器中I/O使用率、可用内存及每一路视频流的并发量;

调度模块,用于根据所述检测模块的检测数据,对视频直播频道的调度队列进行调度;

切换模块,用于根据所述调度模块的调度结果,对直播类型进行切换。

本发明实施例中,检测视频直播服务器中输入输出I/O使用率、可用内存及每一路视频流的并发量;根据检测数据,对视频直播频道的调度队列进行调度;根据调度结果,对直播类型进行切换;从而实现对视频直播频道的动态管理和控制,通过切换视频的存储状态,使视频的质量和并发量达到最优化。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1为本发明实施例中视频直播处理方法的示意图;

图2为本发明实施例中视频直播处理装置的示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。

本发明实施例提供一种介于落地直播和内存直播之间的直播技术,以保证视频质量和并发量的同时兼容。在本发明实施例中,考虑I/O使用率、可用内存及每一路视频流的并发量等多种情况来动态切换内存直播和落地直播,保证直播过程的顺畅和稳定。

图1为本发明实施例中视频直播处理方法的示意图,如图1所示,本发明实施例的视频直播处理方法可以包括:

在启动视频直播后,启动调度线程、检测线程和切换线程;所述检测线程用于检测视频直播服务器中I/O使用率、可用内存及每一路视频流的并发量;所述调度线程用于根据所述检测线程的检测数据,对视频直播频道的调度队列进行调度;所述切换线程用于根据所述调度线程的调度结果,对直播类型进行切换。

由图1可知,本发明实施例的视频直播处理方法可以解决视频直播的流畅性及视频直播服务器的复用问题。在不增加视频直播服务器的情况下,根据直播路数和视频直播服务器性能自动调整内存和落地直播,对外提供稳定的直播服务。实施时主要基于HLS的内存切片和物理切片,结合带宽、内存、I/O存储等多重条件,实现直播类型的自动切换,自动分配,完成对视频的完美直播。

具体实施时,在启动视频直播后,启动调度线程、检测线程和切换线程;其中,检测线程用于检测视频直播服务器中I/O使用率、可用内存及每一路视频流的并发量。每一路视频流的并发量可以是每一路视频流的观看人数。在具体的实施例中,检测线程可以进一步用于通过执行iostat命令,获取视频直播服务器中I/O使用率。由于iostat命令主要用于监控系统设备的I/O负载情况,iostat命令首次运行时显示自系统启动开始的各项统计信息,之后运行iostat命令将显示自上次运行该命令以后的统计信息,可以通过指定统计的次数和时间来获得所需的统计信息,因此,视频直播服务器中I/O使用率的获取可以通过调用系统命令iostat来获取,%util作为I/O的使用率,可以表明一秒中有百分之多少的时间用于I/O操作。

在具体的实施例中,检测线程可以进一步用于通过调用视频直播服务器的系统接口,获取视频直播服务器中可用内存。通过调用系统接口,可以获取可用的内存大小。例如,由于视频直播服务器系统中,主要运行intsysinfo(structsysinfo*info)服务程序,所以系统内存就可以认为是该服务程序可以申请的最大内存,考虑到系统占用,程序的可用内存,可以是系统可用内存的80%。

在具体的实施例中,检测线程可以进一步用于通过统计套接字(Socket)的连接情况,获取视频直播服务器中每一路视频流的并发量;其中对于客户端IP相同的情况,通过相同数据片的发送次数统计并发量。

网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个Socket。建立网络通信连接至少要一对端口号(Socket)。Socket本质是编程接口(API)。Socket通常也称作套接字,用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。

视频直播服务器中每一路视频流的并发量的获取,可以通过Socket的连接情况,统计出来。由于HLS的下载是分片下载,所以根据客户端IP统计的话,会有误差。因为相同的IP可能有多人访问,所以对于客户端IP相同的情况,通过相同的数据片发送的次数来统计最后的并发量。

调度线程用于根据所述检测线程的检测数据,对视频直播频道的调度队列进行调度。调度线程可以根据检测数据,对频道队列参数进行修正,并通知切换线程进行切换。具体实施时,调度线程可以进一步用于:在收到开频道指令后,判断视频直播服务器中I/O使用率是否超过第一设定值;如果视频直播服务器中I/O使用率超过第一设定值,则禁止新频道加入调度队列;如果视频直播服务器中I/O使用率未超过第一设定值,则将新频道加入调度队列。其中的第一设定值可以根据实际情况进行设置和调整,例如可以取80%。例如,调度线程收到开频道指令以后,需要先判断系统IO的使用率是否超过80%。如果超过80%,则禁止新频道的加入,因为磁盘%util大于80%的时候,读取速度就会有较多的延迟(wait),说明有太多的落地直播在处于使用当中;如果没有超过80%,将新频道加入到调度队列中,供调度使用。

在具体的实施例中,调度线程可以进一步用于:判断视频直播服务器中可用内存是否大于第二设定值;如果视频直播服务器中可用内存大于第二设定值,从调度队列中取出一个可用于调度的落地直播,将该直播频道交由切换线程进行从落地直播到内存直播的切换,并从调度队列中删除该直播频道;如果视频直播服务器中可用内存不大于第二设定值,从调度队列中取出一个可用于调度的内存直播,将该直播频道交由切换线程进行从内存直播到落地直播的切换,并从调度队列中删除该直播频道。其中,第二设定值可以根据实际情况进行设置和调整,例如可以取100M。

例如,在调度频道线程时,调度线程一直处理调度队列中的任务状态,处理过程可以包括:

1、对队列按照并发量由大到小排序,将所有的切换因子置为0;

2、优先使用内存直播,判断可用内存大小是否大于100M,需要预留100M的内存用于新频道的加入以及其它开销,这里取值100M是经验值。

3、如果可用内存大于100M,从调度队列中取出一个可以用于调度的落地直播,然后将这个直播频道交给切换线程,进行从落地直播到内存直播的切换,并且从调度队列中删除。

4、如果可用内存小于等于100M,从调度队列中取出一个可以用于调度的内存直播,然后将这个直播频道交给切换线程,进行从内存直播到落地直播的切换,并且从调度队列中删除。

在具体的实施例中,所述可用于调度的落地直播的直播路数在调度队列的落地直播中最大,且距离上一次调度的时长大于设定时长;和/或,所述可用于调度的内存直播的直播路数在调度队列的内存直播中最小,且距离上一次调度的时长大于设定时长。

所述设定时长可以根据实际情况进行设置和调整,例如可以取30秒。可用的落地直播需要满足直播路数最大,距离上一次的调度时间大于30秒,这样可以避免频繁切换调度模式,频繁的切换调度模式会增加CPU和内存的负担,这里的30秒是根据实际测试过程中调整的经验值。可用的内存直播需要满足直播路数最小,距离上一次的调度时间大于30秒。

切换线程用于根据所述调度线程的调度结果,对直播类型进行切换。在具体的实施例中,切换线程可以进一步用于在视频数据I帧到来时,对直播类型进行切换。在调度线程完成一次调度以后,需要切换线程对直播频道进行切换,切换的过程中需要保证视频的流畅性,所以需要等待视频数据I帧的到来,不同的系统I帧间隔不一样,所以切换频道模式的速度也不尽相同。

在具体的实施例中,切换线程可以进一步用于:在进行从内存直播到落地直播的切换时,新建文件,将新数据保存至磁盘,通知数据发送线程从磁盘读取数据发送给客户端;在进行从落地直播到内存直播的切换时,停止写文件,将新数据保存至内存,通知数据发送线程从内存读取数据发送给客户端。

例如,如果是内存直播到落地直播,需要新建文件,将新的数据保存到磁盘,并且通知数据发送线程,从这个切片开始,从磁盘读取数据,发送给客户端。并且更新任务的切换时间。发送数据线程到达指定时间片后,从磁盘读取数据,并且将之前的磁盘数据删除。如果是落地直播到内存直播,需要停止写文件,将数据保存到内存,并且通知数据发送线程,从这个切片开始,从内存读取数据,发送给客户端。发送数据线程到达指定时间片后,从内存读取数据,并且将之前的磁盘数据删除。并且更新任务的切换时间。完成切换工作以后,将这一任务重新添加到调度队列,供调度线程进行调度。

由上述实施例可知,本发明实施例的视频直播处理方法提供了一种服务器性能自适应的公网直播技术,根据实际内存、网络带宽、I/O性能、频道访问量等来动态调整内存直播和落地直播,从而能够适应各种不同的直播应用场合。例如,本发明实施例的视频直播处理方法可以解决目前在法院公网直播系统中对外直播的流畅性及服务器的复用问题。在不增加服务器的情况下,根据直播路数和服务器性能自动调整内存和落地直播,对外提供稳定的直播服务。主要基于HLS的内存切片和物理切片,结合带宽、内存、I/O存储多重条件,实现内存和落地直播自动切换,自动分配,完成对庭审现场的完美直播。庭审公开是司法公开的关键。随着庭审过程的公开,对于庭审过程中的质量和性能的保证成为了公开过程中必须保证的一环。应用本发明实施例的视频直播处理方法即可在保证视频质量的情况下提升视频并发量,为庭审公开提供强有力的保障。显然,本发明实施例的视频直播处理方法不仅限于法院业务,还可以扩展到所有的直播平台。

基于同一发明构思,本发明实施例中还提供了一种视频直播处理装置,如下面的实施例所述。由于该装置解决问题的原理与视频直播处理方法相似,因此该装置的实施可以参见视频直播处理方法的实施,重复之处不再赘述。

图2为本发明实施例中视频直播处理装置的示意图,如图2所示,本发明实施例中视频直播处理装置可以包括:

检测模块201,用于检测视频直播服务器中I/O使用率、可用内存及每一路视频流的并发量;

调度模块202,用于根据所述检测模块201的检测数据,对视频直播频道的调度队列进行调度;

切换模块203,用于根据所述调度模块202的调度结果,对直播类型进行切换。

一个实施例中,所述检测模块201可以进一步用于:

通过执行iostat命令,获取视频直播服务器中I/O使用率;

通过调用视频直播服务器的系统接口,获取视频直播服务器中可用内存;

通过统计套接字Socket的连接情况,获取视频直播服务器中每一路视频流的并发量;其中对于客户端IP相同的情况,通过相同数据片的发送次数统计并发量。

一个实施例中,所述调度模块202可以进一步用于:

在收到开频道指令后,判断视频直播服务器中I/O使用率是否超过第一设定值;

如果视频直播服务器中I/O使用率超过第一设定值,则禁止新频道加入调度队列;

如果视频直播服务器中I/O使用率未超过第一设定值,则将新频道加入调度队列。

一个实施例中,所述调度模块202可以进一步用于:

判断视频直播服务器中可用内存是否大于第二设定值;

如果视频直播服务器中可用内存大于第二设定值,从调度队列中取出一个可用于调度的落地直播,将该直播频道交由切换模块进行从落地直播到内存直播的切换,并从调度队列中删除该直播频道;

如果视频直播服务器中可用内存不大于第二设定值,从调度队列中取出一个可用于调度的内存直播,将该直播频道交由切换模块进行从内存直播到落地直播的切换,并从调度队列中删除该直播频道。

一个实施例中,所述可用于调度的落地直播的直播路数在调度队列的落地直播中最大,且距离上一次调度的时长大于设定时长;和/或,所述可用于调度的内存直播的直播路数在调度队列的内存直播中最小,且距离上一次调度的时长大于设定时长。

一个实施例中,所述切换模块203可以进一步用于在视频数据I帧到来时,对直播类型进行切换。

一个实施例中,所述切换模块203可以进一步用于:

在进行从内存直播到落地直播的切换时,新建文件,将新数据保存至磁盘,用以从磁盘读取数据发送给客户端;

在进行从落地直播到内存直播的切换时,停止写文件,将新数据保存至内存,用以从内存读取数据发送给客户端。

综上所述,本发明实施例旨鉴于内存直播和落地直播的优缺点,提出一种既能解决视频直播质量又能解决视频直播并发量的技术。在本发明实施例中,检测视频直播服务器中输入输出I/O使用率、可用内存及每一路视频流的并发量;根据检测数据,对视频直播频道的调度队列进行调度;根据调度结果,对直播类型进行切换;从而实现对视频直播频道的动态管理和控制,通过切换视频的存储状态,使视频的质量和并发量达到最优化。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1