发明内容
本发明所要解决的技术问题是提供一种流媒体采集编码服务系统,以解决图像画面不流畅的问题。
为了解决上述问题,本发明公开了一种流媒体采集编码服务系统,包括:
信号采集模块,用于实时采集原始音视频流;
编码器,用于将所述原始音视频流编码成音视频数据,并提供给通讯服务模块,编码过程中根据网络带宽实时调整音视频数据中关键帧出现的概率;
所述编码器为多路编码器,用于对每个视频源并发启动多路编码,每路对应一种码率;
通讯服务模块,用于将所述音视频数据拆分成网络传输包的形式分发给请求端,并且每次将多个网络传输包分发给请求端;
所述请求端为流媒体直播引擎或集群存储服务器,所述流媒体直播引擎用于将接收到的音视频数据传输给客户端播放器,传输过程中实时调整音视频数据中关键帧的发送概率;
客户端播放器提供用户选择功能,用户根据需求选择不同的码率进行播放。
优选的,所述信号采集模块用于对每个视频源实时采集多路原始音视频流,每路对应一种码率。
优选的,所述编码器包括:
编码模块,用于将所述原始音视频流编码成音视频数据,并提供给通讯服务模块;
带宽检测模块,用于实时检测网络带宽;
关键帧调整模块,用于根据网络带宽,通过减小音视频数据中关键帧产生的间隔,来增加编码过程中关键帧出现的概率。
优选的,所述编码器还包括:
校验模块,用于在所述关键帧中加入校验信息。
优选的,所述信号采集模块同步采集原始音视频流。
与现有技术相比,本发明具有以下优点:
首先,本发明提供了一种流媒体采集编码服务系统,对流媒体压缩编码的处理进行了优化,在网络带宽过低或网络带宽不明确且不稳定的情况下,通过在编码过程中增加音视频数据中关键帧出现的概率,解决图像画面不流畅的问题。
其次,所述系统可以对每个视频源实时采集多路原始音视频流,并可以对每个视频源并发启动多路编码,其中每路对应一种码率。这样,同一视频就有多种码率可供用户选择,用户可以在网络带宽资源较少的情况下选择低码率,而在带宽资源充足的情况下选择高码率,实现多码率的切换,从而保证视频播放的流畅度。
再次,所述系统在向请求端发送网络传输包形式的音视频数据时,可以打破传统TCP/IP协议每次读取64K数据包的规定,一次读取和传输多个包,即每次读取和传输的数据量大于64K,从而减少数据读写次数,减少整个系统和网络的开销。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
在实际应用中,虽然H.264或者MPEG-4的压缩算法比MPEG-2、MJPEG等先进了很多,更大的降低了码流,但是,在低带宽下却反而容易造成画面不流畅的问题。这是为什么呢?首先需要分析出原因,才能解决该问题。
本发明对此问题的分析如下:
与MJPEG压缩每一帧都是单独JPEG图的方式不同,MPEG系列压缩算法采用了I帧、P帧和B帧的模式,其中,I帧是关键帧,P帧是前向预测帧,B帧是后向预测帧。MPEG解码过程如下:
当解码器收到一个I帧,可立刻进行解码,而不需要其它条件。但是, 当解码器收到P帧或者B帧的时候,就不能够立刻进行解码,比如,P帧的解码需要解码器先解码该帧前面的P帧或者I帧。如果前面的P帧或者I帧在网络中丢掉,即使后面连续收到很多P帧,也无法正常解码。例如:在带宽不够的情况下网络丢掉一个I帧,即使随后的P帧都收到,仍然无法正确解码出图像。这就是为什么低带宽下MPEG4或者H.264压缩算法表现还不如MJEPG的原因。
本发明基于上述原因,提供了一种流媒体采集编码服务系统,该系统提出一种解决思路:增加关键帧的概率,使解码器在一定时间内收到更多的关键帧,这样,即使由于网络问题出现丢帧现象,由于解码器可以在更短的时间间隔内收到下一个关键帧,因此可以立即进行解码播放,从而解决了画面长时间停滞的问题。
下面通过实施例进行详细说明。
实施例一:
参照图1,是本发明实施例一所述一种流媒体采集编码服务系统的结构图。
所述流媒体采集编码服务系统主要包括:
信号采集模块11,用于实时采集原始音视频流;
编码器12,用于将所述原始音视频流编码成音视频数据,并提供给通讯服务模块13,编码过程中根据网络带宽实时调整音视频数据中关键帧出现的概率;
通讯服务模块13,用于将所述音视频数据拆分成网络传输包的形式分发给请求端。
其中,参照图2,所述编码器12可以进一步包括:
编码模块21,用于将所述原始音视频流编码成音视频数据,并提供给通讯服务模块;
带宽检测模块22,用于实时检测网络带宽;
关键帧调整模块23,用于根据网络带宽,通过减小音视频数据中关键帧 产生的间隔,来增加编码过程中关键帧出现的概率。
所述带宽检测模块22能以比较简单的算法和较低的开销,对带宽进行实时检测,实时掌握实际的网络带宽,这样就可以对编码策略进行实时调整,从而最大利用带宽进行流媒体视频传输。
在MPEG系列编码算法中,通常用GOP(Group Of Picture)这一值来设置I帧产生的间隔。所谓GOP,意思是画面组,一个GOP就是一组连续的画面。
经过所述带宽检测模块22的检测,如果当前网络带宽良好,则所述关键帧调整模块23可以按照通常的经验值来设置GOP值。但是,如果检测结果是当前的网络带宽过低或网络带宽不明确且不稳定,则所述关键帧调整模块23可以将GOP的值调整到一个较小的合适值,相应的,I帧产生的间隔变小,就可以增加编码过程中I帧出现的概率。例如,一组视频帧包含15帧,假设每隔4帧是一个I帧,则共有3个I帧;将I帧的间隔减小为2帧,则共有5个I帧,I帧增加了2帧。
这样,如果1秒钟能够产生多个I帧,即使偶尔丢掉了一个I帧,下一个I帧也能很快弥补上,图像不至于长时间的停滞。
优选的,为了保证服务器播放的内容不会被随意篡改,所述编码器12还可以包括:
校验模块24,用于在所述关键帧中加入校验信息。
上述系统解决了图像画面不流畅的问题,在此基础上:
优选的,所述系统还提供了多码率编码的特性,如下:
所述信号采集模块11可以对每个视频源实时采集多路原始音视频流,每路对应一种码率;
并且,所述编码器12可以对每个视频源并发启动多路编码,每路对应一种码率。
其中,码率就是数据传输时单位时间传送的数据位数,码率也叫码流(Data Rate)。
所述视频源是指视频的信号来源,一路视频源可以为一个单独的节目, 也可以针对一个频道。每一路视频源会预置多种可选的码率,不同视频源可以设置不同的码率。
这样,同一视频就有多种码率可供用户选择,用户可以在网络带宽资源较少的情况下选择低码率,而在带宽资源充足的情况下选择高码率,实现多码率的切换,从而保证视频播放的流畅度。
例如,提供两路码率:高清视频码率和流畅视频码率。其中,流畅视频码率是针对带宽环境不能满足高清视频要求的客户设置。
高清视频码率的配置为:
320kbps H.264 High profile视频+64kbps MP3音频;
流畅视频码率的配置为:
200kbps H.264视频+48kbps MP3音频。
编码器并发启动两路编码,这样用户可以在带宽支持高画质的情况下选择高清视频码率,在带宽不支持高画质的情况下选择流畅视频码率,虽然画质受到一些影响,但还是可以保证视频的流畅播放。
再例如,提供多种码率,用户在不同的场景下,可以选择不同的码流。如:
对于主要使用声音模式的场景,如用户在网上进行远程教育的学习,播放网络讲座等,由于用户关注的是声音,对画面的播放可以忽略,因此这种情况下,可以选择低码流的播放,即使画面播放不连续,但保证声音播放流畅即可。
对于主要观看视频画面的场景,如电影、电视剧的播放、球赛的直播等,用户关注声音的同时,更主要的是观看画面,因此这种情况下,就需要选择高码流的播放,以保证画面的流畅。而且在网络带宽支持的情况下,用户还可以选择更高的码流来提高画面的清晰度,享受高画质的播放。
实施例二:
参照图3,是本发明实施例二所述一种流媒体采集编码服务系统的结构图。
所述系统包括三个层级,最底层的是系统层1,包括硬件平台以及覆盖其上的操作系统和设备驱动,还有音/视频采集设备;中间层是采集压缩系统2,主要包括信号采集模块、多路编码器和通讯服务模块;最上层的是请求端3,如流媒体直播引擎、转发服务及存储服务等,其中存储服务可以由集群存储服务器实现。
其中,所述采集压缩系统2是整个系统中非常重要的组件,其主要功能是采集音视频源信号,将其编码成多种码率的FLV格式,并发送给直播引擎和集群存储服务器的录制端。
所述系统的采集编码过程如下:
信号采集模块通过音、视频采集设备或数字信号进行多码率实时采集,应用了优化的视音频帧interleave算法,通过由视频源采集出音视频,实现同步性高的音视频采集。采集得到的中间格式以高清晰的H.264格式编码后传入多路编码器。
多路编码器可对于每个视频源并发启动多路编码,接收到来自信号采集模块的H.264格式的原始音视频流后,按照用户需求将其编码成多个不同图像大小、码率、帧率的流,然后提供给通讯服务模块。本实施例提供了一种优化的编码策略:多路编码器在编码过程中可以根据网络带宽实时调整音视频数据中关键帧出现的概率,例如在网络带宽过低或网络带宽不明确且不稳定的情况下,可以通过减小关键帧产生的间隔,来增加编码过程中关键帧出现的概率,解决画面流畅的问题。
通讯服务模块接受外部应用的请求后,将音视频数据拆分成网络传输包的形式分发给请求端。如果网络发生阻塞,通讯服务模块可以根据实时性要求选择暂存或丢弃帧的策略,后者可以保证所发数据都是最新的。例如,通讯服务模块可以将音视频数据发送给流媒体直播引擎,该引擎用于提供音视频直播服务,直播引擎可以将编码好的音视频数据实时发送给用户。
优选的,所述流媒体采集编码服务系统的一个特点是数据发送方式:
通常,网络上的数据传输按照传统TCP/IP协议每次读取64K的数据包。但本实施例中,所述通讯服务模块定义了自己的通信协议,该协议将网络传 输包发送给请求端的过程中,每次读取多个64K的包进行传输,即每次的数据量要大于64K。这样,可以减少数据读写次数,减少整个系统和网络的开销。
例如,通讯服务模块向实现存储服务的集群存储服务器发送音视频数据,每次向集群存储服务器存入大于64K的多个数据包,由于每次访问集群存储服务器的数据量较大,因此总的访问次数减少了,就可以节省CPU、网络等各项资源。
优选的,在通讯服务模块将音视频数据发送给流媒体直播引擎的过程中,本实施例还提供了一种优化的发送策略,用于解决图像画面的不流畅,如下:
所述流媒体直播引擎可以在传输过程中实时调整音视频数据中关键帧的发送概率,可以通过增加单位时间内容I帧的发送概率来尽量满足解码器的解码需求。
综上所述,所述流媒体采集编码服务系统具有实时采集、多码率优化编码、优化发送等特点,可广泛的应用于网络直播、点播等多个领域。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
以上对本发明所提供的一种流媒体采集编码服务系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。