主播端流媒体数据生成系统及方法、网络直播系统及方法与流程

文档序号:14023252阅读:994来源:国知局
主播端流媒体数据生成系统及方法、网络直播系统及方法与流程

本发明属于网络直播技术领域,特别涉及一种主播端流媒体数据生成系统及方法、网络直播系统及方法。



背景技术:

“网络直播”大致分两类,第一类是在网上提供电视信号的观看,例如各类体育比赛和文艺活动的直播,这类直播原理是将电视(模拟)信号通过采集,转换为数字信号输入电脑,实时上传网站供人观看,相当于“网络电视”;第二类则是真正意义上的“网络直播”:在现场架设独立的信号采集设备采集多媒体数据(包括音频数据和视频数据),导入主播端(导播设备或平台),再通过网络上传至服务器,发布至网址供人观看。本发明针对的是上述网络直播中的第二类情况,特别是针对个人直播,即目前直播市场中的最常见的方式。第二类网络直播较第一类的最大区别就在于直播的自主性:独立可控的音视频采集,完全不同于转播电视信号的单一(况且观看效果不如电视观看的流畅)收看。

网络直播过程中的多媒体数据通常包括视频数据和音频数据。如图1所示,普通的网络直播系统包括主播端1、服务器2和客户端3,其中主播端1采集到多媒体数据后生成流媒体数据,并将流媒体数据通过网络上传至服务器2;服务器2接收到客户端3的观看直播请求后,将流媒体数据通过网络传输至客户端3。

从附图1可以看出,流媒体数据需要经过上传和下载两个网传过程。由于网传通常都需要用到运营商的网络,因此如何在保证用户体验的前提下,降低网络直播中占用的带宽,为用户节省流量,一直是网络直播产品开发中需要考虑的问题。

网传中的流媒体数据都是由主播端1流媒体数据生成系统产生,如图2所示,传统的主播端1流媒体数据生成系统包括音视频采集模块4、音视频编码模块5和流媒体封装模块6,音视频采集模块4的输出端通过音视频编码模块5与流媒体封装模块6的输入端相连,其中音视频采集模块4采集音视频数据后经音视频编码模块5压缩编码,再经流媒体封装模块6进行封装,最后输出流媒体数据。

通常,网传的流媒体数据包括视频压缩数据和音频压缩数据。音频压缩数据通常都不会太大,视频压缩数据在流媒体数据中占的比重很大,而影响视频压缩数据大小的因素主要是视频图像的复杂度(复杂度通常包括运动复杂度、纹理复杂度等)和编码器,其中当编码器确定后又与编码参数相关。

网络直播中,主播的状态是多样的,常见的状态是主播在镜头前和粉丝进行互动聊天,而有时主播可能在一边睡觉一边直播,有时主播短暂离开但直播继续,还有的时候可能主播主动把镜头遮挡住。主播端1不同的状态,意味着在不同的时间段,待编码的视频图像复杂度是不一样的,目前的直播方案都是一套流媒体数据生成方案应对所有的主播状态,即预先设定好音视频编码模块5的编码器参数,将压缩编码后生成的视频和音频数据,封装成流媒体数据,网传出去。这种主播端1流媒体数据生成方法的缺陷是,没有考虑到主播状态会有变化、直播的画面复杂度会有明显变化(最常见的是静态场景和动态场景之间的变化),对于观看用户来说会存在流媒体数据的冗余,浪费流量。

针对这个问题,现有的直播技术中基本都没有去考虑,比较接近的方案可能会有以下的几种方式:1.主播短暂离开的时候,主播手动把直播关闭,这种情况下直播中断,回来之后需要重连,对用户体验影响比较大;2.直播端设置选项,主播可以手动选择只传输音频数据、不传播视频数据,这种方案需要主播交互操作,而且主播只能选择带与不带视频直播,没有对视频数据编码方式进行优化,解决方案比较粗糙,且还是存在比较大的流媒体数据冗余。



技术实现要素:

现有的主播端流媒体数据生成系统采用一套流媒体数据生成方案应对所有的主播状态,存在较大的流媒体数据冗余,增加用户观看网络直播的成本。本发明的目的在于,针对上述现有技术的不足,提供一种主播端流媒体数据生成系统及方法、网络直播系统及方法,能够在网络直播过程中判别主播端状态,自动选择合适的流媒体数据生成方式,在保证用户观看体验的前提下,采用不同的流媒体数据生成方案,降低直播流媒体数据占用的网络带宽,进而节省直播的流量,降低用户观看网络直播的成本。

为解决上述技术问题,本发明所采用的技术方案是:

一种主播端流媒体数据生成系统,包括音视频采集模块、音视频编码模块和流媒体封装模块,音视频采集模块的输出端通过音视频编码模块与流媒体封装模块的输入端相连,流媒体封装模块输出流媒体数据;其结构特点是还包括场景分析模块和控制模块,音视频采集模块的输出端通过场景分析模块和控制模块的输入端相连,控制模块的输出端与音视频编码模块相连;其中场景分析模块用于对音视频采集模块采集到的视频数据进行分析,判断当前的场景类别ni并将场景类别ni输送至控制模块;控制模块内部预设有包含n个元素的场景类别集合n以及流媒体数据生成方案集合m,其中m与n中的元素一一对应,控制模块根据ni选择执行m中对应的流媒体数据生成方案;所述流媒体数据生成方案包括设置音视频编码模块对视频数据的编码参数。

现有直播应用中通常对视频数据的编码采用恒定码率的码控方式,即在某段时间内编码码率只会在目标码率上进行微小波动。由于编码压缩后的图像主观质量与待编码图像的复杂度及压缩后的数据大小有关,其中视频压缩后数据的大小又和当前编码器的编码参数设置相关。本发明利用场景分析模块对视频数据进行图像处理和分析,判断当前场景属于某个预先设定的场景类别,再根据判别出的场景类别,采用不同的流媒体数据生成方案。由于不同的场景类别采用了不同的编码参数,通过调整编码参数控制编码损失大小,将复杂度高的视频图像和复杂度低的视频图像压缩到同一主观质量等级,其中通过增加复杂度低的视频图像的编码损失,达到整体上缩小压缩后的视频数据大小的目的。

进一步地,所述控制模块的输出端还与流媒体封装模块相连;所述流媒体数据生成方案包括控制流媒体封装模块仅封装音频数据,或者控制流媒体封装模块仅封装视频数据,或者控制流媒体封装模块封装音频和视频数据。

借由上述结构,在不影响用户观看体验的前提下,根据场景选择是否封装视频数据。由于音频压缩数据通常都不会太大,视频压缩数据在流媒体数据中占的比重很大,在某些场景下不对视频数据进行封装,极大地缩小了流媒体数据的大小。

基于同一个发明构思,本发明还提供了一种主播端流媒体数据生成方法,包括步骤:

步骤一,音视频采集模块采集音频数据和视频数据;

步骤二,场景分析模块对音视频采集模块采集到的视频数据进行分析,判断当前的场景类别ni并将场景类别ni输送至控制模块;

步骤三,控制模块根据ni选择执行m中对应的流媒体数据生成方案,并根据流媒体数据生成方案设置音视频编码模块对视频数据的编码参数;其中控制模块(8)内部预设有包含n个元素的场景类别集合n以及流媒体数据生成方案集合m,其中m与n中的元素一一对应,

步骤四,音视频编码模块根据步骤三中选择的流媒体数据生成方案中的视频数据编码参数对视频数据编码;同时对音频数据编码。

进一步地,还包括步骤五,流媒体封装模块根据步骤三中选择的流媒体数据生成方案仅封装音频数据,或者仅封装视频数据,或者封装音频和视频数据。

作为一种优选方式,n={ni|i=1,2,3},其中n1=正常场景,n2=画面静止场景,n3=镜头遮挡场景;m={mj|j=1,2,3};其中m1=设置音视频编码模块对视频数据的目标码率为恒定值t1且流媒体封装模块封装音频和视频数据,m2=设置音视频编码模块对视频数据的目标码率为恒定值t2且流媒体封装模块封装音频和视频数据,m3=流媒体封装模块仅封装音频数据,其中t2<t1;n1对应m1,n2对应m2,n3对应m3;

步骤二中场景分析模块对视频图像进行分析并判断当前场景类别的过程如下:

a.求视频图像的平均亮度值avgluma,若连续s帧图像的avgluma小于预设值th1,则确定当前场景类别为n3;否则跳转至步骤b;

b.对视频图像进行滤波降噪处理,通过帧差法检测当前图像相对于前一帧图像或前几帧图像的运动量,再对帧差法之后的图像进行滤波处理并统计运动像素点个数summov,若连续s帧图像的summov小于预设值th2,则确定当前场景类别为n2;否则跳转至步骤c;

c.确定当前场景类别为n1。

作为另一种优选方式,n={ni|i=1~n},其中n1=镜头遮挡场景nm=画面稳定且图像运动复杂度波动,nn=画面状态不稳定;

m={mj|j=1~n},其中m1=流媒体封装模块仅封装音频数据,mm=设置音视频编码模块对视频数据的目标码率为恒定值tm且流媒体封装模块封装音频和视频数据,mn=设置音视频编码模块对视频数据的目标码率为恒定值t1且流媒体封装模块封装音频和视频数据;其中m∈[2,n-2];tm的数值由以下规则确定:

若(t/(n-2))*m≥th3,则tm=(t/(n-2))*m,否则tm=th3,其中t为给定的目标码率;th3为预设的目标码率值;

步骤二中场景分析模块对视频图像进行分析并判断当前场景类别的过程如下:

a.求视频图像的平均亮度值avgluma,若连续s帧图像的avgluma小于预设值th1,则确定当前场景类别为n1;否则跳转至步骤b;

b.对视频图像进行滤波降噪处理,通过帧差法检测当前图像相对于前一帧图像或前几帧图像的运动量,再对帧差法之后的图像进行滤波处理并统计运动像素点个数summov,若连续s帧图像的summov∈[summ,summ+δsum),则确定当前场景类别为nm;否则跳转至步骤c;其中,summ=(m-1)*(w*h/(n-2)),δsum=(w*h/(n-2)),w表示视频图像的宽,h表示视频图像的高;

c.确定当前场景类别为nn。

基于同一个发明构思,本发明还提供了一种网络直播系统,包括所述的主播端流媒体数据生成系统。

基于同一个发明构思,本发明还提供了一种网络直播方法,包括所述的主播端流媒体数据生成方法。

与现有技术相比,本发明能够在网络直播过程中智能判别主播端状态,自动选择合适的流媒体数据生成方式,在保证用户观看体验的前提下,采用不同的流媒体数据生成方案,降低直播流媒体数据占用的网络带宽,进而节省直播的流量,降低用户观看网络直播的成本。

附图说明

图1为网络直播系统框图。

图2为传统的主播端流媒体数据生成系统框图。

图3为本发明主播端流媒体数据生成系统框图。

其中,1为主播端,2为服务器,3为客户端,4为音视频采集模块,5为音视频编码模块,6为流媒体封装模块,7为场景分析模块,8为控制模块。

具体实施方式

如图2所示,网络直播系统中的主播端流媒体数据生成系统包括音视频采集模块4、音视频编码模块5和流媒体封装模块6,音视频采集模块4的输出端通过音视频编码模块5与流媒体封装模块6的输入端相连,流媒体封装模块6输出流媒体数据;其结构特点是还包括场景分析模块7和控制模块8,音视频采集模块4的输出端通过场景分析模块7和控制模块8的输入端相连,控制模块8的输出端与音视频编码模块5相连;其中场景分析模块7用于对音视频采集模块4采集到的视频数据进行分析,判断当前的场景类别ni并将场景类别ni输送至控制模块8;控制模块8内部预设有包含n个元素的场景类别集合n以及流媒体数据生成方案集合m,其中m与n中的元素一一对应,控制模块8根据ni选择执行m中对应的流媒体数据生成方案;所述流媒体数据生成方案包括设置音视频编码模块5对视频数据的编码参数。

所述控制模块8的输出端还与流媒体封装模块6相连;所述流媒体数据生成方案包括控制流媒体封装模块6仅封装音频数据,或者控制流媒体封装模块6仅封装视频数据,或者控制流媒体封装模块6封装音频和视频数据。

场景分析模块7和控制模块8的作用是进行算法和逻辑判断,通常是以软件的形式运行在普通的处理器上(也可以把这些算法和逻辑判断通过硬件可编程实现并固化下来)。本发明的大致流程是,音视频采集模块4采集音频数据和视频数据后,场景分析模块7对视频图像进行分析,智能地判断当前的场景属于某个预先设定的场景类别。根据判别出的场景类别,采用不同的流媒体数据生成方案,这些流媒体数据生成方案包含对视频编码采用不同的策略(调整编码参数等)、对音视频数据封装的不同组合,最后推流出去进行网传。

本发明网络直播方法中的主播端流媒体数据生成方法的实施过程如下:

(一)准备过程

(1)根据主播端1经常出现的一些直播状态预先设置状态场景集合n,直播状态场景划分依据为是否可以为该场景设定流媒体数据生成方案以减少流媒体数据冗余,一个直播状态场景通常是主播在一段时间内会持续的状态。

(2)为每个状态场景类别设定一套流媒体数据生成方案,流媒体数据生成方案的数目与场景状态数目一致,并一一对应。流媒体数据生成方案集合设置为m(m与n集合一一对应),流媒体数据生成方案可以是采用下面两种之一,或者二者相结合:

第一种,针对不同的状态场景对编码器进行调整,包括但不限于对编码器对视频数据的编码参数进行调整,目的是找到该状态场景下不影响用户主观效果的最佳编码方案。

第二种,控制流媒体封装模块6对音频数据和视频数据封装的不同组合,包括仅封装音频数据、仅封装视频数据、封装音频和视频数据三种情况。

(二)处理流程

(1)主播端1在音视频采集模块4中通过采集设备进行音频数据和视频数据的采集;

(2)针对采集后的视频数据,利用图像处理的方法对直播端状态进行分析,并标记场景类别si,分析的依据可以是视频图像的运动复杂度、视频图像的颜色特征等。需要指明的是,这里并不限定图像分析的具体方法,也不限定图像分析中选取的特征,所有通过对图像分析进行归类的方案都在此专利的保护范围内;

(3)对(2)中分析出的结果进行归类,将所有场景归于预先设定的某一类直播场景中,即si∈ni,其中(si∈n)。包含两种情况,一种情况是与一一对应的,即每个视频图像场景类别就是一个直播场景,采用一种流媒体生成方法;另一种情况是与是多对一的关系,即多个图像场景类别对应一个直播场景,采用同一种流媒体生成方案。

(4)为直播场景类别ni选择对应的流媒体数据生成方案mi,其中mi∈m。

(5)根据(4)中选择的流媒体数据生成方案产生流媒体数据,里面包含音视频编码和流媒体封装。

(6)将生成好的流媒体数据通过协议进行传输,至此完成主播端1的流媒体数据产生。

为了更好地描述整个过程,假定直播视频图像的分辨率为360×640,记w×h=360×640,正常直播的目标码率设置为600kb/s,记t1=600。

本发明对主播端1经常出现的直播状态进行分类,分类的依据是通过对大量的直播视频数据进行分析,并且能针对该状态场景制定出相比传统方案更节省码率的流媒体数据生成方案。根据图像分析场景类别与主播状态是否一一对应,有下面两种主播状态分类方案。

(一)图像分析场景类别与主播状态是多对一的关系,人为根据经验,将常见的主播状态场景分为n(n=3)类:正常场景、画面静止场景、镜头遮挡场景(这里只列了三个场景,根据需要还可以增加场景类别),为每个直播状态场景设置一种流媒体数据生成方案:

方案1:对应正常场景,保持传统的流媒体数据生成方法,即流媒体数据封装方案为音频数据+视频数据,不改变视频数据编码的目标码率;

方案2:对应画面静止场景(主播短暂离开、主播睡觉等),此时待编码的视频图像复杂度低,可以通过调整视频编码参数等方法,降低视频多媒体的数据量,音频数据保持传统策略。具体方案为流媒体数据封装方案为音频数据+视频数据,改变视频编码的目标码率;

方案3:对应镜头遮挡场景(一般是主播主动遮挡),此时整个画面是一片黑,传输视频数据没有什么意义,采用只传输音频数据的方案。

可见,当图像分析场景类别与主播状态是多对一的关系时,n={ni|i=1,2,3},其中n1=正常场景,n2=画面静止场景,n3=镜头遮挡场景;m={mj|j=1,2,3};其中m1=设置音视频编码模块对视频数据的目标码率为恒定值t1且流媒体封装模块封装音频和视频数据,m2=设置音视频编码模块对视频数据的目标码率为恒定值t2且流媒体封装模块封装音频和视频数据,m3=流媒体封装模块仅封装音频数据,其中t2<t1;n1对应m1,n2对应m2,n3对应m3;

具体的实施步骤如下:

步骤一,主播端1在音视频采集模块4中通过采集设备进行音频数据和视频数据的采集;

步骤二,场景分析模块7针对音视频采集模块4采集到的视频数据,利用图像处理的方法对直播端状态进行分析,判断当前的场景类别ni并将场景类别ni输送至控制模块8;分析时主要考虑视频图像的亮度特征和运动程度,具体的分析判断过程如下:

a.求视频图像的平均亮度值,统计一帧中所有像素的亮度分量值,每个像素点的亮度值记为pi,平均亮度值记为的avgluma,其中,w表示视频图像的宽,h表示视频图像的高;若连续s帧(s可以选为gop长度的整数倍,如gop长度为50帧,2倍gop长度则为100帧)图像的avgluma小于预设值th1(th1选取为经验值,范围一般为(0,20]),则确定当前场景类别为n3(镜头遮挡场景);否则跳转至步骤b;

b.对视频图像进行滤波降噪等预处理,通过帧差法检测当前图像fcur相对于时间轴上前一帧图像flast(或前几帧图像)的运动量,再对帧差法之后的图像进行滤波处理并统计运动像素点个数summov,若连续s帧图像的summov小于预设值th2(th2是一个经验常数,通常取值范围是[0,w×h/20]),则确定当前场景类别为n2(画面静止场景);否则跳转至步骤c;

c.确定当前场景类别为n1(不满足a、b两个状态之一的其他状态,全部归类为正常场景)。

步骤三,控制模块8根据ni选择执行m中对应的流媒体数据生成方案,并根据流媒体数据生成方案设置音视频编码模块5对视频数据的编码参数;

步骤四,音视频编码模块5根据步骤三中选择的流媒体数据生成方案中的视频数据编码参数对视频数据编码;同时对音频数据编码。

步骤五,流媒体封装模块6根据步骤三中选择的流媒体数据生成方案仅封装音频数据,或者仅封装视频数据,或者封装音频和视频数据。

步骤三至步骤五的具体过程如下:

控制模块8根据步骤二中的直播场景类别,选择相应的预先设定的流媒体数据生成方案,方案选择如下:正常场景选择方案1,画面静止场景选择方案2,镜头遮挡场景选择方案3。

方案1:该方案实施过程和传统的直播端流媒体数据生成方法一致,即将音视频编码模块5对视频数据编码的目标码率设置为600kb/s,音频数据编码还是按传统的方案,编码完之后,流媒体封装模块6封装时将视频压缩数据和音频压缩数据一起封装进去;

方案2:该方案将音视频编码模块5对视频数据编码的目标码率设置的比正常场景低,设置为200kb/s,编码完之后,流媒体封装模块6封装时将视频压缩数据和音频压缩数据一起封装进去;

方案3:该方案的实施过程中为了不改变音频数据和视频数据编码的流程,可以正常进行音频数据和视频数据的编码,只是音视频数据编码完之后,流媒体封装模块6封装时只封装音频压缩数据,不封装视频压缩数据。

将生成好的流媒体数据通过协议进行传输,至此完成主播端1流媒体数据产生。

(二)图像分析场景类别与主播状态是一对一的关系,即主播状态类别可以考虑镜头遮挡、画面运动复杂度这两个因素,假定主播状态数预设为n(其中1种类别表示镜头遮挡,n-2种直播状态类别由不同的图像运动复杂度决定,剩下的1种类别表示画面状态不稳定的直播场景),相应的我们应该设定n种流媒体数据生成方案:

方案1:流媒体数据生成方案中仅包含音频数据,不含视频数据;

方案2~方案n-2:流媒体数据生成方案为音频数据+视频数据,根据运动复杂度改变视频数据编码的目标码率;

方案3:流媒体数据生成方案为音频数据+视频数据,不改变视频数据编码的目标码率。

可见,当图像分析场景类别与主播状态是多对一的关系时,n={ni|i=1~n},其中n1=镜头遮挡场景,nm=画面稳定且图像运动复杂度波动,nn=画面状态不稳定;m={mj|j=1~n},其中,m1=流媒体封装模块仅封装音频数据,mm=设置音视频编码模块对视频数据的目标码率为恒定值tm且流媒体封装模块封装音频和视频数据,mn=设置音视频编码模块对视频数据的目标码率为恒定值t1且流媒体封装模块封装音频和视频数据;其中m∈[2,n-2];

具体的实施步骤如下:

步骤一,主播端1在音视频采集模块4中通过采集设备进行音频数据和视频数据的采集;

步骤二,场景分析模块7针对音视频采集模块4采集到的视频数据,利用图像处理的方法对直播端状态进行分析,判断当前的场景类别ni并将场景类别ni输送至控制模块8;分析时主要考虑视频图像的亮度特征和运动程度,具体的分析判断过程如下:

a.求视频图像的平均亮度值,统计一帧中所有像素的亮度分量值,每个像素点的亮度值记为pi,平均亮度值记为的avgluma,其中,w表示视频图像的宽,h表示视频图像的高;若连续s帧(s可以选为gop长度的整数倍,如gop长度为50帧,2倍gop长度则为100帧)图像的avgluma小于预设值th1(th1选取为经验值,范围一般为(0,20]),则确定当前场景类别为n1(镜头遮挡场景);否则跳转至步骤b;

b.对视频图像进行滤波降噪等预处理,通过帧差法检测当前图像fcur相对于时间轴上前一帧图像flast(或前几帧图像)的运动量,再对帧差法之后的图像进行滤波处理并统计运动像素点个数summov。因为总共有n-2种不同运动复杂度的状态,每个状态的判断方式为:如果summov∈[summ,summ+δsum),(其中m∈[2,n-2],summ=(m-1)*(w*h/(n-2)),δsum=(w*h/(n-2)),w表示视频图像的宽,h表示视频图像的高),且该状态持续了s帧(该值选取的方法同上),则当前场景类别判定为类别nm;否则跳转至步骤c。另外值得说明的是,基于运动复杂度的类别不适合划分的过细。

c.确定当前场景类别为nn(不满足a、b两个状态之一的其他状态,全部归类为画面状态不稳定的直播场景)。

步骤三,控制模块8根据ni选择执行m中对应的流媒体数据生成方案,并根据流媒体数据生成方案设置音视频编码模块5对视频数据的编码参数;

步骤四,音视频编码模块5根据步骤三中选择的流媒体数据生成方案中的视频数据编码参数对视频数据编码;同时对音频数据编码。

步骤五,流媒体封装模块6根据步骤三中选择的流媒体数据生成方案仅封装音频数据,或者仅封装视频数据,或者封装音频和视频数据。

步骤三至步骤五的具体过程如下:

控制模块8根据步骤二中的直播场景类别,选择相应的预先设定的流媒体数据生成方案,方案选择如下:镜头遮挡场景选择方案1,画面稳定且图像运动复杂度波动选择方案2,画面状态不稳定选择方案3。

方案1:该方案的实施过程中为了不改变音频数据和视频数据编码的流程,可以正常进行音频数据和视频数据的编码,只是音视频数据编码完之后,流媒体封装模块6封装时只封装音频压缩数据,不封装视频压缩数据。

方案2:该方案将主要是调整音视频编码模块5对视频数据编码的目标码率。类别为nm的场景类别相应的目标码率tm的数值由以下规则确定:

若(t/(n-2))*m≥th3,则tm=(t/(n-2))*m,否则tm=th3,其中t取600,(示例中只给定了目标码率的这种设定方案,其他类似的方案也应该在本发明的保护范围内),th3选取跟图像分辨率相关,在360×640分辨率下该值可以设为100。编码完之后,流媒体封装模块6封装时将视频压缩数据和音频压缩数据一起封装进去。

方案3:该方案实施过程和传统的直播端流媒体数据生成方法一致,即将音视频编码模块5对视频数据编码的目标码率设置为600kb/s,音频数据编码还是按传统的方案,编码完之后,流媒体封装模块6封装时将视频压缩数据和音频压缩数据一起封装进去。

将生成好的流媒体数据通过协议进行传输,至此完成主播端1流媒体数据产生。

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