一种直播视频动态上传方法及系统与流程

文档序号:12182843阅读:864来源:国知局
一种直播视频动态上传方法及系统与流程



背景技术:

随着网络技术和移动智能终端的发展,网络视频直播由于综合了图像、声音和文字的优点,特别是向用户提供即时与互动的交流和沟通方式而受到用户的青睐,视频直播社区的活跃用户数量不断增加,观众的观看需求也不断多样化,越来越多的人不仅作为观众,而且开始作为主播进入直播行业。但是,直播视频发生卡顿的现象极大地影响了用户作为主播的积极性,也降低了观众的体验和对直播视频网站的粘性,对直播视频网站的业务造成不良的影响。造成直播视频卡顿的原因通常是由于用户上传视频的客户端的网速较低,导致用户上传视频时出现视频客户端播放发生卡顿现象。



技术实现要素:

针对现有技术中存在的缺陷,本发明的主要目的在于提供一种直播视频动态上传方法,本发明的另一目的在于提供一种直播视频动态上传系统,能够根据客户端的实时上传网速,动态地调节直播视频的传输分辨率来提高直播视频上传的效率,确保直播视频的流畅性,从而有效地解决了因为客户端网速过低所导致的视频卡顿问题,提升了用户的满意度和粘性。

本发明提供一种直播视频动态上传方法,用于从基于安卓操作系统的客户端向直播网站上传直播视频,包括以下步骤:

从客户端向直播网站上传直播视频时,获取客户端网卡的实时上传网速,当实时上传网速的变化率超过预设的阈值范围时,调整直播视频的传输分辨率。

在上述技术方案的基础上,所述方法还包括:调整直播视频的传输分辨率时,暂停获取实时上传网速,根据调整后的传输分辨率采集直播视频,并在开始向直播网站传输直播视频后,继续获取实时上传网速。

在上述技术方案的基础上,获取实时上传网速的方法包括:

按照预设的采集间隔持续检测客户端网卡的上传流量值,通过采集间隔的时间和两次采集时的上传流量值计算实时上传网速。

在上述技术方案的基础上,根据采集间隔前后的实时上传网速的变化值,计算实时上传网速的变化率,计算依据公式:实时上传网速的变化率=实时上传网速的变化值/采集间隔的时间。

在上述技术方案的基础上,所述传输分辨率包括240p、360p、720p和1080p。

在上述技术方案的基础上,调整直播视频的传输分辨率的方法包括:

当所述实时上传网速的变化率大于所述阈值范围的上限值时,判断直播视频的当前传输分辨率是否为所述传输分辨率中的最低值,若是,保持当前传输分辨率不变;若否,将低于当前传输分辨率的所述传输分辨率作为调整后的传输分辨率;

当所述实时上传网速的变化率小于所述阈值范围的下限值时,判断直播视频的当前传输分辨率是否为所述传输分辨率中的最高值,若是,保持当前传输分辨率不变;若否,将高于当前传输分辨率的所述传输分辨率作为调整后的传输分辨率。

本发明还提供一种直播视频动态上传系统,用于从基于安卓操作系统的客户端向直播网站上传直播视频,包括:

传输模块,用于从客户端向直播网站上传直播视频;

检测模块,用于获取客户端网卡的实时上传网速;

控制模块,用于当实时上传网速的变化率超过预设的阈值范围时,调整直播视频的传输分辨率。

在上述技术方案的基础上,所述检测模块在所述控制模块调整直播视频的传输分辨率时,暂停获取实时上传网速,所述传输模块根据调整后的传输分辨率采集直播视频,并在开始向直播网站传输直播视频后,所述检测模块继续获取实时上传网速。

在上述技术方案的基础上,所述检测模块用于按照预设的采集间隔持续检测客户端网卡的上传流量值,通过采集间隔的时间和两次采集时的上传流量值计算实时上传网速。

在上述技术方案的基础上,所述传输分辨率包括240p、360p、720p和1080p。

与现有技术相比,本发明的优点如下:

(1)本发明能够根据客户端网卡的实时上传网速,动态地调节直播视频的传输分辨率来提高直播视频上传的效率,确保直播视频的流畅性,从而有效地解决了因为客户端网速过低所导致的直播视频卡顿问题,提升了用户的满意度和粘性。

(2)本发明能够在客户端网速较高时,以较高的传输分辨率上传直播视频,保证直播视频的清晰度和质量。

(3)本发明通过检测客户端网卡的上传流量值,计算获得客户端的实时上传网速,解决了安卓操作系统无法直接获取客户端实时网速的问题。

附图说明

图1是本发明实施例直播视频动态上传方法流程图;

图2是步骤S1中获取实时上传网速的方法的具体流程图;

图3是步骤S2的具体流程图;

图4是本发明实施例直播视频动态上传系统示意图。

具体实施方式

术语说明:

Byte:字节是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。

Kb:千字节是计算机中表储存容量大小的单位。

JDK:JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境,JAVA工具和JAVA基础的类库。

下面结合附图及具体实施例对本发明作进一步的详细描述。

参见图1所示,本发明实施例提供一种直播视频动态上传方法,用于从基于安卓操作系统的客户端向直播网站上传直播视频,包括以下步骤:

S1.从客户端向直播网站上传直播视频,获取客户端网卡的实时上传网速。

传输分辨率包括240p、360p、720p和1080p,从客户端向直播网站上传直播视频时,直播视频的当前传输分辨率为240p、360p、720p或者1080p。

获取实时上传网速的方法包括:

按照预设的采集间隔持续检测客户端网卡的上传流量值,通过采集间隔的时间和两次采集时的上传流量值计算实时上传网速。

由于安卓操作系统并没有提供获取客户端的实时网速的应用程序编程接口API(Application Programming Interface),所以本发明通过检测客户端网卡的上传流量值,计算获得客户端的实时上传网速,解决了安卓操作系统无法直接获取客户端实时网速的问题。

参见图2所示,步骤S1中获取实时上传网速的方法具体包括:

S101检测客户端网卡的当前上传流量值。

S102将当前上传流量值作为上次上传流量值,在预设的采集间隔后检测客户端网卡的上传流量值,并作为更新的当前上传流量值。

S103根据当前上传流量值和上次上传流量值的差值以及采集间隔的时间,计算客户端网卡的当前上传网速,计算依据公式:当前上传网速=(当前上传流量值-上次上传流量值)/采集间隔的时间。

以下以Java语言的软件开发工具包JDK为例,具体说明获取实时上传网速的方法:

可以设定预设的采集间隔的时间为1秒。

通过JDK提供的帮助类Timer中的schedule方法开启定时器任务,schedule方法的主要功能是开启一个JDK中的与定时器相关的定时任务。

每隔1秒去获取客户端网卡的当前上传流量值,具体方法为:TrafficStats是安卓操作系统提供的一套获取系统流量的帮助类,这个类中提供了很多和系统流量相关的帮助方法,通过调用其中提供的getTotalTxBytes()方法就能够获取客户端网卡的当前上传流量值。

接下来计算1秒前后获取2次上传流量值的差值。为了方便叙述,将上次上传流量值标记为preNet,当前上传流量值标记为curNet,计算网卡上传流量值的差值diffNet,即diffNet=curNet–preNet,计算完差值以后,根据当前上传流量值和上次上传流量值的差值以及采集间隔的时间,计算获得客户端网卡的当前上传网速。为了确保能够计算下一秒的上传流量值的差值,需要将curNet的值赋值给preNet。

第一次计算上传网速比较特殊,因为上次上传流量值preNet的初始值为0,所以在第一次计算网卡上传流量值的差值diffNet的时候不会直接去获取上传流量值的差值。如果发现preNet为0,此时不做差值计算而是直接将获取到的curNet的值赋值给preNet,等下一秒时再按照上述方法计算差值。

由于获取的网卡上传流量值的单位是byte,为了计算上传网速,需要将byte转换成相应的kb数据。具体转换方式是diffNet的值除以1024就转换成对应的kb值,为了下文叙述方便将对应的kb值标记为diffNetKb,由于定时器的定时周期是1s,所以上传网速是diffNetKb除以1s的值。

S2.当实时上传网速的变化率超过预设的阈值范围时,调整直播视频的传输分辨率。

参见图3所示,步骤S2具体包括:

S201根据采集间隔前后的实时上传网速的变化值,计算实时上传网速的变化率,计算依据公式:实时上传网速的变化率=实时上传网速的变化值/采集间隔的时间。

S202判断实时上传网速的变化率是否超过预设的阈值范围,若是,进入S203;若否,进入S3。

S203调整直播视频的传输分辨率。

实时上传网速波动的范围是一个范围值,具体根据实际情况而定,通常在50KB/S---200KB/S之间,为了叙述方便,可以设定预设的阈值范围在-100KB/S到100KB/S之间进行描述,如果实际使用中使用其他值的情况处理逻辑和本发明所述逻辑一致。

本发明中直播视频的传输分辨率分为如下几个档次:240p、360p、720p和1080p。直播视频的传输分辨率的调整是在这几个分辨率档之间进行调整。

如果上传网速增加了100KB/S,说明当前客户端系统有其他任务占用了上传带宽就有可能会影响到直播视频的上传质量,为了确保直播视频能够正常上传并且不出现任何卡顿,此时降低上传的直播视频的分辨率,以确保直播视频不会出现卡顿。

如果上传网速减少了100KB/S,说明当前客户端系统有其他任务释放了上传带宽,说明有更多的宽带给直播视频进行上传更高清的视频流,为了提供更好的画质,此时提高一个分辨率,用于提高上传直播视频的清晰度。

本步骤的前提条件是直播视频正在正常上传直播,当前直播上传分辨率是上述4档中的一个分辨率。传输分辨率包括240p、360p、720p和1080p。

调整直播视频的传输分辨率的方法包括:

当实时上传网速的变化率大于阈值范围的上限值时,判断直播视频的当前传输分辨率是否为传输分辨率中的最低值,若是,保持当前传输分辨率不变;若否,将低于当前传输分辨率的传输分辨率作为调整后的传输分辨率。

当实时上传网速的变化率小于阈值范围的下限值时,判断直播视频的当前传输分辨率是否为传输分辨率中的最高值,若是,保持当前传输分辨率不变;若否,将高于当前传输分辨率的传输分辨率作为调整后的传输分辨率。

例如,通过第1步中每隔1s获取客户端网卡的实时上传网速,计算当前最近2次上传网速的差值,具体计算方法同步骤S1类似,并且对于第一次的特殊情况的处理方案和步骤S1中类似,将获取的实时上传网速的变化值标记为diffUP,diffUP=下一秒上传网速–上一秒上传网速。

如果diffUP的值是大于100KB/S,说明当前上传的带宽整体增加了,说明客户端系统有其他任务占用了上传带宽,此时应该将上传的直播视频流档次拉低一个档次,如果当前是最低档240p,只需要维持不动即可。

如果是小于-100KB/S,说明当前上传的带宽整体减少了,说明客户端系统有更多的带宽用于上传更高质量的直播视频,此时应该将上传的直播视频流提升一个档次,如果当前是最高档1080p,只需要维持该分辨率即可。

如果diffUP的值在-100KB/S到100KB/S之间,通常认为波动不是很大,保持原来上传分辨率不变。

本步骤中调整视频分辨率是通过调用C语言的视频采集率配置函数setResolution函数来设置传输分辨率。设置后视频采集端就会按照调整后的传输分辨率采集直播视频的视频流了。

S3判断上传直播视频是否结束,若否,进入S1;若是,结束。

本发明能够在客户端网速较高时,以较高的传输分辨率上传直播视频,保证直播视频的清晰度和质量。

本方法还包括:调整直播视频的传输分辨率时,暂停获取实时上传网速,客户端根据调整后的传输分辨率采集直播视频,并在开始向直播网站传输直播视频后,继续获取实时上传网速。

由于在调整传输分辨率的过程中,当前上传网速会发生波动,所以在调整传输分辨率的过程中暂停获取实时上传网速,只有等调整传输分辨率完成并稳定后,才会继续获取实时上传网速,以避免因数据波动造成的误调整。

本发明能够根据客户端网卡的实时上传网速,动态地调节直播视频的传输分辨率来提高直播视频上传的效率,确保直播视频的流畅性,从而有效地解决了因为客户端网速过低所导致的直播视频卡顿问题,提升了用户的满意度和粘性。

本发明还提供一种直播视频动态上传系统,用于从基于安卓操作系统的客户端向直播网站上传直播视频,参见图4所示,包括传输模块、检测模块和控制模块。

传输模块,用于从客户端向直播网站上传直播视频。

检测模块,用于获取客户端网卡的实时上传网速。检测模块按照预设的采集间隔持续检测客户端网卡的上传流量值,通过采集间隔的时间和两次采集时的上传流量值计算实时上传网速。

控制模块,用于当实时上传网速的变化率超过预设的阈值范围时,调整直播视频的传输分辨率。

检测模块在控制模块调整直播视频的传输分辨率时,暂停获取实时上传网速,传输模块根据调整后的传输分辨率采集直播视频,并在开始向直播网站传输直播视频后,检测模块继续获取实时上传网速。

传输分辨率包括240p、360p、720p和1080p。

本发明能够在客户端网络环境发生一定变化的时候,动态调节直播视频上传的传输分辨率,并结合恰当地使用缓存技术,能够确保直播视频上传流畅,不会出现视频的卡顿或抖动等问题。

本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

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