一种直播视频的处理方法及装置
技术领域
本发明涉及互联网及视频直播技术领域,具体而言,涉及一种直播视频的处理方法及装置。
背景技术
视频直播是指利用互联网及流媒体技术将主播录制的直播视频广播至多个观众用户的方式,在进行视频直播时,主播客户端通过摄像头采集主播的直播视频,然后将采集的直播视频发送给服务器,由服务器将直播视频发送给客户端。
视频直播与其他形式的视频播放最大的不同之处在于,直播视频具有交互性,这种交互性主要体现在两方面,一方面是观众与观众之间进行的交互,另一方面是观众和主播之间进行的交互。由于视频直播是实时将主播的视频发送出去,但是,在视频直播的过程中主播可能会离开摄像头或者睡觉,这时,观众和主播之间无法进行交互,如果这时仍然采用现有技术中处理直播视频的方式处理当前视频,容易造成大量的冗余数据和带宽的浪费。
发明内容
有鉴于此,本发明实施例的目的在于提供一种直播视频的处理方法及装置,以解决在观众和主播无法进行交互的情况下,如果继续采用现有技术中的直播视频的处理方法,容易导致大量的冗余数据和带宽浪费的问题。
第一方面,本发明实施例提供了一种直播视频的处理方法,其中,所述方法包括:
获取摄像头采集的视频数据流,所述视频数据流包括多个视频帧;
按相同布局将每一个所述视频帧划分为多个图像块;
计算每个所述图像块的亮度值,根据所述亮度值计算每个所述视频帧中位置相同的所述图像块之间的所述亮度值的差值;
确定所述位置相同的所述图像块对应的所述差值的平均值,根据所述平均值对应的所述图像块的个数确定所述视频数据流是否为静帧视频流;
当确定所述视频数据流为静帧视频流后,执行逐级降低所述摄像头的帧率、逐级增加所述视频数据流中关键帧的间隔和发送断流消息给服务器中至少一项。
结合第一方面,本发明实施例提供了上述第一方面的第一种可能的实现方式,其中,所述按相同布局将每一个所述视频帧划分为多个图像块,包括:
周期性确定所述视频帧的划分布局;
根据所述划分布局将每一帧所述视频帧划分为多个图像块。
结合第一方面的第一种可能的实现方式,本发明实施例提供了上述第一方面的第二种可能的实现方式,其中,所述周期性确定所述视频帧的划分布局,包括:
在静帧检测周期开始后,提取当前检测周期内的第一个所述视频帧的亮度信号;
将第一个所述视频帧按照第一预设尺寸划分为多个区域,计算每个所述区域对应的像素点的亮度均值,将像素点的所述亮度均值相等且相邻的至少两个所述区域合并作为一个所述区域,得到所述视频帧的划分布局。
结合第一方面,本发明实施例提供了上述第一方面的第三种可能的实现方式,其中,所述按相同布局将每一个所述视频帧划分为多个图像块,包括:
按照第二预设尺寸将每一个所述视频帧平均划分为多个图像块。
结合第一方面,本发明实施例提供了上述第一方面的第四种可能的实现方式,其中,所述计算每个所述图像块的亮度值,包括:
获取所述图像块中每个像素点对应的亮度值;
根据每个所述像素点对应的亮度值,计算所述图像块对应的像素点的亮度均值;
将所述图像块对应的像素点的亮度均值确定为所述图像块的亮度值。
结合第一方面,本发明实施例提供了上述第一方面的第五种可能的实现方式,其中,所述根据所述亮度值计算每个所述视频帧中位置相同的所述图像块之间的所述亮度值的差值,包括:
计算当前检测周期内每个所述视频帧中与所述当前检测周期内第一个视频帧中位置相同的所述图像块之间的所述亮度值的差值。
结合第一方面,本发明实施例提供了上述第一方面的第六种可能的实现方式,其中,所述根据所述平均值对应的所述图像块的个数确定所述视频数据流是否为静帧视频流,包括:
统计每个检测周期内所述平均值不为零的图像块的个数;
将所述个数与预设阈值进行比较,当连续预设数目个检测周期对应的所述个数小于所述预设阈值时,确定所述视频数据流为静帧视频流。
结合第一方面,本发明实施例提供了上述第一方面的第七种可能的实现方式,其中,所述当确定所述视频数据流为静帧视频流后,执行逐级降低所述摄像头的帧率、逐级增加所述视频数据流中关键帧的间隔和发送断流消息给服务器中至少一项,包括:
当确定所述视频数据流为静帧视频流后,统计所述静帧视频流的持续时间;
根据所述持续时间,执行逐级降低所述摄像头的帧率、逐级增加所述视频数据流中关键帧的间隔和发送断流消息给服务器中至少一项。
第二方面,本发明实施例提供了一种直播视频的处理装置,其中,该装置包括:
获取模块,用于获取摄像头采集的视频数据流,所述视频数据流包括多个视频帧;
划分模块,用于按相同布局将每一个所述视频帧划分为多个图像块;
计算模块,用于计算每个所述图像块的亮度值,根据所述亮度值计算每个所述视频帧中位置相同的所述图像块之间的所述亮度值的差值;
确定模块,用于确定所述位置相同的所述图像块对应的所述差值的平均值,根据所述平均值对应的所述图像块的个数确定所述视频数据流是否为静帧视频流;
执行模块,用于当确定所述视频数据流为静帧视频流后,执行逐级降低所述摄像头的帧率、逐级增加所述视频数据流中关键帧的间隔和发送断流消息给服务器中至少一项。
结合第二方面,本发明实施例提供了上述第二方面的第一种可能的实现方式,其中,所述划分模块包括:
确定单元,用于周期性确定所述视频帧的划分布局;
划分单元,用于根据所述划分布局将每一帧所述视频帧划分为多个图像块。
本发明实施例提供的直播视频的处理方法及装置,对获取到的视频数据流进行静帧检测,当检测到为静帧状态时,即当前当观众和主播之间无交互时,执行逐级降低摄像头的帧率、逐级增加视频数据流中关键帧的间隔和发送断流消息给服务器中至少一项,避免了在观众和主播之间无交互时产生大量的冗余数据和导致带宽的浪费。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本发明实施例1所提供的一种直播视频的处理方法的流程图;
图2示出了本发明实施例1所提供的一种直播视频的处理方法中周期性确定视频帧的划分布局的流程图;
图3示出了本发明实施例1所提供的一种直播视频的处理方法中计算每个图像块的亮度值的流程图;
图4示出了本发明实施例2所提供的一种直播视频的处理装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
考虑到现有技术中,在进行视频直播时,主播可能会离开摄像头或者睡觉,这时,观众和主播之间无法进行交互,如果这时仍然采用现有技术中处理直播视频的方式处理当前视频,容易造成大量的冗余数据和带宽的浪费。基于此,本发明实施例提供了一种直播视频的处理方法及装置,下面通过实施例进行描述。
实施例1
本发明实施例提供了一种直播视频的处理方法,如图1所示,采用该方法处理直播视频时,包括步骤S110-S150,具体如下。
S110,获取摄像头采集的视频数据流,该视频数据流包括多个视频帧。
其中,上述摄像头指的是手机或者电脑等设备上自带的摄像头,摄像头会实时采集视频数据流,当摄像头开启后,便开始采集视频数据流,并将采集的视频数据流输出给执行本发明实施例中的处理方法的装置,其中,摄像头采集的视频数据流是以视频帧帧为单位传输的,因此,获取的视频数据流包括多个视频帧。
S120,按相同布局将每一个视频帧划分为多个图像块。
当获取到摄像头采集的视频数据流后,将该视频数据流中的每一个视频帧都进行划分,划分成多个图像块,在本发明实施例中,对视频帧的划分包括两种情况:
第一种情况:周期性确定上述视频帧的划分布局;根据上述划分布局将每一帧上述视频帧划分为多个图像块。
其中,上述周期性确定上述视频帧的划分布局指的是在每个检测周期内,确定一次视频帧的划分布局,并且根据该检测周期内接收得到第一个视频帧确定,在该检测周期内接收到的其它视频帧均按照该检测周期内确定的划分布局进行划分,得到多个图像块。
在本发明实施例中,如图2所示,周期性确定上述视频帧的划分布局,包括步骤S210-S220,具体如下。
S210,在静帧检测周期开始后,提取当前检测周期内的第一个视频帧的亮度信号。
本发明实施例中,周期性对视频数据流进行静帧检测,每个检测周期的时间长短可以是预先设定的,比如说,5秒作为一个检测周期、8秒作为一个检测周期或者10秒作为一个检测周期等等,上述检测周期的具体时间长短可以根据实际应用场景进行设置,本发明实施例并不限定上述检测周期的具体时间长度。
上述获取到的视频数据流为YUV(Luminance Chrominance,亮度色度)格式的,其中,Y是亮度信号,且Y数据是连续存放的,视频帧中的每一个像素对应一个字节的数据,提取视频帧的亮度信号时,根据采集的视频数据流的分辨率,该分辨率可以表示为width×height(宽×高),从视频数据流中拷贝出分辨率的width乘以height个字节的数据,该数据就是提取的视频帧的亮度信号。
S220,将第一个视频帧按照第一预设尺寸划分为多个区域,计算每个区域对应的像素点得亮度均值,将像素点得亮度均值相等且相邻的至少两个区域合并作为一个区域,得到上述视频帧的划分布局。
上述第一预设尺寸可以是64×64像素,也可以是其他大小,该第一预设尺寸的选取可以根据实际应用场景进行设置,本发明实施例并不对上述预设尺寸的具体大小进行限定。
按照上述第一预设尺寸的大小,将检测周期内接收到的第一个视频帧划分为多个区域,每个区域的大小与第一预设尺寸相等。
上述计算每个区域对应的像素点的亮度均值是通过先计算每个区域内所有像素点的亮度值总和,将该亮度值总和除以该区域内的像素点的个数,得到该区域对应的像素点的亮度均值。
将上述第一个视频帧划分得到的每个区域对应的像素点的亮度均值与其相邻的四个区域对应的像素点的亮度均值进行比较,判断像素均值是否相等,如果相等,则将其合并为一个区域,这样就将第一个视频帧划分为多个较大的区域,将该较大的区域成为图像块,并将该划分后的视频帧确定为当前检测周期内的划分布局。
在本发明实施例中,每个周期确定一次划分布局,因此,当获取到视频帧后,首先确定获取的视频帧是否是当前检测周期内的第一个视频帧,如果是,则根据该视频帧确定当前检测周期的划分布局,如果获取的视频帧不是当前检测周期内的第一个视频帧,则按照当前检测周期内确定的划分布局,将该视频帧进行划分,得到多个图像块。
第二种情况:按照第二预设尺寸将每一个视频帧平均划分为多个图像块。
上述第二预设尺寸具体大小可以根据实际应用场景进行设置,本发明实施例并不对第二预设尺寸的具体大小进行限定。
在上述第二种情况中,当获取到视频帧后,不管该视频帧是当前检测周期内的第一个视频帧,还是第一个视频帧之后的视频帧,将获取到的每个视频帧均按照第二预设尺寸平均划分为多个图像块,每个图像块的大小是相等的。
S130,计算每个图像块的亮度值,根据该亮度值计算每个视频帧中位置相同的图像块之间亮度值的差值。
不管是按照上述第一种情况将视频帧划分为多个图像块,还是按照上述第二种情况将视频帧划分为多个图像块,当将视频帧划分为多个图像块之后,均需要计算每个图像块的亮度值。
其中,如图3所示,计算每个图像块的亮度值,包括步骤S310-S330,具体如下。
S310,获取图像块中每个像素点对应的亮度值。
S320,根据每个像素点对应的亮度值,计算图像块对应的像素点的亮度均值。
在本发明实施例中,计算每个图像块中所有像素点对应的亮度值的总和,将计算得到的总和除以该图像块中的像素点的个数,得到该图像块对应的像素点得亮度均值。
S330,将上述图像块对应的像素点的亮度均值确定为图像块的亮度值。
上述计算出的图像块对应的像素点得亮度均值就是该图像块的亮度值。
当确定出每个图像块的亮度值后,根据图像块的亮度值计算每个视频帧中位置相同的图像块之间亮度值的差值,具体包括:
计算当前检测周期内每个视频帧中与当前检测周期内第一个视频帧中位置相同的图像块之间亮度值的差值。
比如说,在当前检测周期内获取了20个视频帧,且每个视频帧均划分成10个图像块,计算第二个视频帧中的10个图像块分别与第一个视频帧中位置相同处的图像块亮度值的差值,计算第三个视频帧中的10个图像块分别与第一个视频帧中位置相同处的图像块亮度值的差值,直到计算出第二十个视频帧中的10个图像块分别与第一个视频帧中位置相同处的图像块亮度值的差值,当然,上述只是以当前检测周期内获取到了20个视频帧、每个视频帧划分为10个图像块为例进行说明,并没有限定当前周期内获取到的视频帧的个数以及每个视频帧划分成的图像块的个数。
S140,确定上述位置相同的图像块对应的差值的平均值,根据上述平均值对应的图像块的个数确定上述视频数据流是否为静帧视频流。
当上述计算出当前检测周期内的每个视频帧中的图像块与该检测周期内第一个视频帧中位置相同处的图像块亮度值的差值后,计算相同位置处的图像块对应的差值的平均值,每个视频帧划分为多少个图像块,则此处得到多少个平均值。
上述根据平均值对应的图像块的个数确定上述视频数据流是否为静帧视频流,包括:
统计每个检测周期内平均值不为零的图像块的个数;将上述个数与预设阈值进行比较,当连续预设数目个检测周期对应的个数小于上述预设阈值时,确定上述视频数据流为静帧视频流。
将上述得到的多个平均值分别与零进行比较,统计上述不为零的平均值对应的图像块的个数,并将该个数与预设阈值进行比较,如果该个数小于预设阈值,且在连续预设数目个检测周期内,不为零的平均值对应的图像块的个数均小于预设阈值,则判断该视频数据流为静帧数据流。
其中,上述预设阈值可以是每个视频帧划分得到的图像块的个数的百分之十,当然,还可以是其他数值,该预设阈值的具体数值可以根据实际应用场景进行设置,本发明实施例并不对上述预设阈值的具体数值进行限定。
上述预设数目个检测周期中的预设数目可以是5、6、8等等数值,该预设数目的具体数值可以根据实际应用场景进行设置,本发明实施例并不对上述预设数目的具体数值进行限定。
当然,上述还可以统计为零的平均值对应的图像块的个数,将该个数与上述预设阈值进行比较,当该个数大于或者等于预设阈值时,且在连续预设数目个检测周期内,为零的平均值对应的图像块的个数均大于或等于预设阈值时,则判断该视频数据流为静帧数据流。
S150,当确定上述视频数据流为静帧视频流后,执行逐级降低上述摄像头的帧率、逐级增加上述视频数据流中关键帧的间隔和发送断流消息给服务器中至少一项。
当确定出上述视频数据流为静帧视频流后,则需要降低当前视频数据流占据的带宽,具体包括:
当确定上述视频数据流为静帧视频流后,统计静帧视频流的持续时间;根据上述持续时间,执行逐级降低上述摄像头的帧率、逐级增加视频数据流中关键帧的间隔和发送断流消息给服务器中至少一项。
其中,上述可以根据静帧视频流的持续时间,可以执行逐级降低摄像头的帧率、逐级增加视频数据流中关键帧的间隔和发送断流消息给服务器中任意一项、任意两项或者三项。
在本发明实施例中,当确定上述视频数据流为静帧视频流后,统计静帧视频流的持续时间,当静帧视频流持续的时间达到T1时,则开始逐级降低摄像头的帧率,这样摄像头输出的视频帧的个数会减少,因此,降低摄像头的帧率可以从源头上减少视频的处理量,一方面可以降低数据处理量,另一方面可以减少数据冗余。
其中,正常情况下摄像头的帧率一般是25~30fps(帧每秒),表示每秒从摄像头输出的视频帧的个数,在逐级降低摄像头的帧率时,可以设置的摄像头的帧率为1~30fps,因此,可以在该范围内逐级降低摄像头的帧率,当然,上述范围可以根据具体应用场景进行调节,此处只是距离进行说明,并没有对上述帧率的调节范围进行限定。
或者还可以,当静帧视频流持续的时间达到T2时,逐级增加视频数据流中关键帧的间隔,由于关键帧中含有大量的信息,因此关键帧数据大小是其他类型帧的数十倍甚至数百倍,关键帧会以一定的间隔出现在视频数据流中,因此,随着静帧视频流持续时间的增长,逐级增加视频数据流中关键帧的间隔,可以减少整个视频数据流的大小,从而减少占据的带宽。
其中,正常情况下关键帧的间隔为30,表示每30个视频帧中只有一个关键帧,上述逐级增加关键帧的间隔后,关键帧的最大间隔可以增大到100,当然,还可以设置为其它数值,此处并不对可调节的关键帧的最大间隔进行限定。
其中,上述时间T1和时间T2可以相等,也可以是时间T1大于时间T2,也可以时间T1小于T2,本发明实施例并不对上述时间T1和时间T2的具体大小关系进行限定。
如果静帧视频流的持续时间一直延长,当静帧视频流的持续时间远远大于上述T1以及T2时,这时需要断开推流链接,即不再向外推送音视频数据流,这时,执行发送断流消息给服务器,这样,可以避免带宽的浪费。
发送断流消息给服务器是为了告知服务器该直播房间断流的原因,并要保持持续直播中,但是没有新的数据推送。对于断流后进入直播房间的观众用户,向服务器请求获取音视频数据时,服务器只能提供缓存的最后一个静帧图像;对于断流前已经进入直播房间的观众用户,服务器通知每一个观众用户断开播放数据请求,但不要释放播放器,播放界面保持最后一帧画面。
当确定上述视频数据流为非静帧视频数据流后,则检测当前的推流链接是否已经断开,如果是,则重新建立和服务器之间的推流链接。
在重新建立和服务器之间的推流链接时,需要发送重连消息给服务器,告知服务器该直播房间将开始重新推流,并要保持房间持续直播中,需要更新音视频数据,当服务器接收到重连消息后,则告知重连前已经进入直播房间的观众用户新的播放地址,播放器会重新加载音视频数据。
当重新建立和服务器之间的推流链接后,则检测当前摄像头的帧率以及视频数据流中关键帧的间隔,如果检测到当前摄像头的帧率已经被修改,则将该摄像头的帧率调节成原来处于非静帧状态时的帧率,如果检测到当前视频数据流中的关键帧间隔已经被修改,则将视频数据流中的关键帧间隔调节到原来处于非静帧状态时的间隔。
本发明实施例提供的直播视频的处理方法,对获取到的视频数据流进行静帧检测,当检测到为静帧状态时,即当前当观众和主播之间无交互时,执行逐级降低摄像头的帧率、逐级增加视频数据流中关键帧的间隔和发送断流消息给服务器中至少一项,避免了在观众和主播之间无交互时产生大量的冗余数据和导致带宽的浪费。
实施例2
本发明实施例提供了一种直播视频的处理装置,如图4所示,该装置包括获取模块410、划分模块410、计算模块430、确定模块440和执行模块450;
其中,上述获取模块410,用于获取摄像头采集的视频数据流,该视频数据流包括多个视频帧;
上述划分模块420,用于按相同布局将每一个视频帧划分为多个图像块;
上述计算模块430,用于计算每个图像块的亮度值,根据该亮度值计算每个视频帧中位置相同的图像块之间亮度值的差值;
上述确定模块440,用于确定上述位置相同的图像块对应的差值的平均值,根据该平均值对应的图像块的个数确定上述视频数据流是否为静帧视频流;
上述执行模块450,用于当确定上述视频数据流为静帧视频流后,执行逐级降低上述摄像头的帧率、逐级增加上述视频数据流中关键帧的间隔和发送断流消息给服务器中至少一项。
其中,上述划分模块420按相同布局将每一个视频帧划分为多个图像块是通过确定单元和划分单元实现的,具体包括:
上述确定单元,用于周期性确定上述视频帧的划分布局;上述划分单元,用于根据上述划分布局将每一帧视频帧划分为多个图像块。
上述划分模块420还可以按照第二预设尺寸将每一个视频帧平均划分为多个图像块。
本发明实施例提供的直播视频的处理装置,对获取到的视频数据流进行静帧检测,当检测到为静帧状态时,即当前当观众和主播之间无交互时,执行逐级降低摄像头的帧率、逐级增加视频数据流中关键帧的间隔和发送断流消息给服务器中至少一项,避免了在观众和主播之间无交互时产生大量的冗余数据和导致带宽的浪费。
本发明实施例所提供的直播视频的处理装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。